私はintへのポインタの配列を、すべて動的メモリ割り当てによって構築する必要があります。 Iが宣言で開始:(サイズ= 1)ポインタの配列の問題
queue[*size-1] = (int*)calloc(1,sizeof(int));
iは整数をスキャン
int** queue = (int**)malloc(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);
プログラムがクラッシュ。 私はいくつかの助けが大好きです。 ありがとうございます!サイズが2以上であれば、あなたが割り当てられていないので、あなたがundifenied行動(例えばクラッシュ)を取得キューにmemeoryに取り組むよう
であなたのコードの残りの部分から想定しています'* 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 –