簡體   English   中英

C:為什么我不能在 function 里面的 malloc

[英]C: Why can't I malloc inside the function

我有int *b和 function

void to_Binary(int num, int range, int **bi_res)
{
   int k = num, c = 0, r;
   *bi_res = (int *) calloc(range,sizeof(int));

   while (range >= c) {
        r = k%2; 
        c++; 
        (*bi_res)[range-c] = r; 
        k /= 2;
    }

   return;
}

這是我如何將b發送到 function 的示例

 void main
{
   // A small example if you want to replicate. 
   int *b;
   int i = 0;
   to_Binary(56,6,&b);
   while (i < 6) {printf("%d\n",b[i]); i++;}
   return;
} 

但它給了我循環中的段錯誤

注意: function 本身工作正常,如果我以其他方式訪問它,它必須做的事情,但如果我需要返回一個我不知道大小的整數數組

while 循環至少有兩個問題。 第一個是您在此語句中使用了不正確的表達式

*bi_res[range-c] = r;

你必須寫

( *bi_res )[range-c] = r;

第二個是,如果您甚至使用正確的表達式,但當范圍等於 c 時,您將嘗試訪問超出分配的數組,因為循環內的這個增量

c++;

因此表達式

range-c

會有一個負值。

你可以像這樣寫循環

while (range != c) {
    //...
}

而這個說法

k =/ 2;

包含語法錯誤。 你的意思是

k /= 2;

請注意,return 語句是多余的。

function main 應該聲明為

int main( void )

並且您應該在 main 中釋放分配的 memory。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM