所以我只是想問,這是一個未定義的行爲,當添加註釋行時。雖然沒有編譯錯誤,並且他們都給出了相同的答案。我想知道有沒有什麼區別。地址是否被地址覆蓋。另外如果有人這樣做(即爲b分配內存),memcpy()
是一個很好的解決方案。這可能是一個微不足道的例子,但我想了解其中的差異。這是一個未定義的行爲?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *a;
int *b;
a=malloc(sizeof(int));
//b=malloc(sizeof(int));
int c=6;
a=&c;
b=a;
printf("%d\n",*b);
return 0;
}
您有內存泄漏。 –
請注意'a = malloc(sizeof(int)); a =&c;'也會造成內存泄漏。 – MikeCAT
無論有沒有評論,你的程序行爲都很糟糕。定義明確,但不好。 :) –