簡體   English   中英

我的malloc聲明有什么問題?

[英]What is wrong with my malloc declaration?

我寫了下面的代碼。 事實是,當它進入內部循環時,程序會堆棧,因此輸入過程將停止。 我做錯什么了嗎?

我在這里要做的是創建一個指針數組,每個指針指向一個數組-每個數組的大小不同。 然后,偶數行僅取一個數字,而奇數行取更多。

long int K,i,j; 
scanf("%ld", &K);   

long int **pl_r;
pl_r = (long int **) malloc(2*K*sizeof(long int *));              

for(i=0; i<K; i++)
{
    pl_r[2*i] = (long int *) malloc(1 *sizeof(long int));
    scanf("%ld", &pl_r[2*i][0]);
    pl_r[2*i+1] = (long int *) malloc(pl_r[2*i][0] *sizeof(long int));
    scanf("%ld", &pl_r[2*i+1][0]);
    for(j=1; j<pl_r[2*i][0]-1; i++){
        scanf("%ld", &pl_r[2*i+1][j]);
    }
}

確保在不使用malloc時包括了<stdlib.h>以避免任何警告,因為如果我沒有記錯的話, 就不應該使用malloc

然后,為了避免在分配內存時指針與指針之間的混淆,您可以執行此操作

pl_r = malloc(K * sizeof *pl_r);

首先, 不要malloc的結果 至於問題,第一個malloc應該是:

pl_r = malloc(K*sizeof(long int *))
                                ^ this is missing

暫無
暫無

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

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