試験勉強をしていて、わかりにくいところに出くわしました。私たちはポインタとメモリの割り当てを扱っています。私はこのビットのコードを持っています:
int * arr[10];
for(i=0; i<5;i++)
{
int index = i;
arr[index] = malloc(sizeof(int*));
int i = 2 * index;
*arr[index] = i;
printf("arr [%d] = %d\n", index, *arr[index]); /* should be 0, 2, 4, 6, 8 */
}
しかし、私が見つけたのは、 *arr[index] = i を使用する代わりに arr[index] = &i を使用すると、malloc
. 私は常に、これら 2 つのことは本質的に同じものであると想定してきましたがmalloc
、一方を使用することを保証するには、理解できない重要な違いがあるに違いありません。
なぜmalloc
ここで本当に必要なのか、実際には混乱しています。私はメモリ割り当てにかなり慣れていませんが、いつ使用する必要があるのか よくわかりません(明らかに)。誰かがこれを解決できるかどうか疑問に思っていました。