即使未使用malloc
,數組是如何創建的?動態數組在沒有malloc的情況下分配
#include <stdio.h>
#include <stdlib.h>
int main() {
int n,i,*ptr,sum=0;
printf("Enter number of elements: ");
scanf("%d",&n);
printf("Enter elements of array: ");
for(i=0;i<n;++i)
{
scanf("%d",ptr+i);
sum+=*(ptr+i);
}
printf("Sum=%d",sum);
free(ptr);
return 0;
}
如果您在使用它之前沒有'malloc'指針,它*可能*不會生成運行時錯誤,因爲您引用的無效地址可能恰好在您的程序有權訪問的空間內而不會產生訪問衝突。這並不意味着它很好。這仍然是一個錯誤。您應該打開警告消息。 – lurker
我很感激這個答案,這很有趣,你可以拋出更多的信息---「你引用的無效地址可能恰好在你的程序訪問的空間內,而不會產生訪問衝突」 –
如果地址例如,在堆的區域內,這是應用程序允許讀取或寫入的內存,但您可能沒有使用'malloc'正確分配它。 – lurker