我正在學習測試,並且遇到了一些我很難理解的東西。我們正在處理指針和內存分配,我只是在玩弄東西,試圖弄清楚什麼改變了。我有這段代碼:C中的內存分配和指針
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 [指數] =我,我用ARR [指數] = &我我不需要malloc
。我一直認爲這兩件事情本質上是一回事,但必須有一些我不明白的關鍵區別,以保證使用malloc
。
我真的很困惑,爲什麼我真的需要malloc
。我對內存分配相當陌生,但我不明白什麼時候應該使用它(顯然),並且想知道是否有人可以爲我解決這個問題。
我想了解最重要的事情是堆棧(局部變量聲明)與從堆中分配內存分配的東西之間的差別(malloc的。) – Marvo