我需要通過動態內存分配構建一個指向int的指針數組。 我開始聲明:指針陣列的問題
int** queue = (int**)malloc(sizeof(int*));
和大於(尺寸= 1)
queue[*size-1] = (int*)calloc(1,sizeof(int));
我掃描的整數:
printf("Enter item value to add\n");
scanf("%d",queue[*size-1]);
printf("Item %d added\n",*(queue[*size-1]));
所有這些代碼是在相同的功能和工作正常。 但是當我嘗試從這個隊列中的另一個功能打印的東西或釋放內存:
for(i = 0;i<size;i++)
{
free(queue[i]);
}
free(queue);
程序崩潰。 我想獲得一些幫助。 在此先感謝!
是'* size-1'應該是'(* size)-1'還是'*(size-1)'? (請參閱[運算符優先順序](http://en.cppreference.com/w/c/language/operator_precedence))。另外[不要施放'malloc']的返回值(http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) – UnholySheep
還有什麼'size'聲明爲?從你的解釋看來,它似乎是一個單一的整數值,在這種情況下,我不明白爲什麼它通過指針 – UnholySheep
來訪問其應該是(* size)-1 –