我正在为考试而学习,我遇到了一些我觉得很难理解的东西。我们正在处理指针和内存分配,而我只是在玩弄一些东西,试图看看是什么改变了什么。我有这段代码:
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
. 我一直认为这两件事本质上是同一件事,但肯定有一些我不明白的关键区别来保证malloc
与一个一起使用。
我真的很困惑为什么我malloc
真的需要在这里。我对内存分配相当陌生,我真的不明白什么时候应该使用它(显然)并且想知道是否有人可以为我解决这个问题。