#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
int * p = malloc(sizeof(int));
*p = 10;
*p += 10;
printf("%d", *p);
}
它給了我正確的值,如果它是malloc分配,但總線錯誤,如果我只是把它聲明爲:爲什麼這需要malloc'd?
int main(){
int * p;
*p = 10;
*p += 10;
printf("%d", *p);
}
要哪個地址是你的'INT * p;'指出,如果你不特別指向任何地方嗎? – nos
你的第二個程序可能發生的*最糟糕的事情是'p'可能碰巧指向你可以讀寫的內存。在那種情況下,你冒險破壞一些重要的數據結構。行爲是未定義的。 –
可能會掉線,但最後還是免費的內存 –