#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int * ptr;
printf("before malloc pointer is :%p \n",ptr);
printf("before malloc valu is :%d \n",*ptr);
ptr = malloc(sizeof(int));
printf("after malloc pointer is %p \n",ptr);
printf("after malloc valu is :%d \n",*ptr);
int jig=32;
*ptr = jig;
printf("after assignment valu is : %d\n",*ptr);
free(ptr);
printf("after free %p \n",ptr); // after free pointer holds sane address then
printf("after fee is %d\n",*ptr); // why it coudnt print that???
return 0;
}
輸出爲:free()如何工作?
before malloc pointer is :0x6edff4
before malloc valu is :7265660
after malloc pointer is 0x9a52008
after malloc valu is :0
after assignment valu is : 32
after free 0x9a52008
after fee is 0
後免費指針仍然認爲,記憶的地址,然後我們爲什麼不能打印內存的值??。
free()做了什麼?
它只是使所有內存爲0 .. ??
在printf的,你取消對NULL指針「之前的malloc VALU」。不要這樣做。 –
聲明任何指針後不指向NULL ...那麼它的安全..不是.. .. ?? ?? –
不,它並不總是安全的,因爲它不是標準化的,加上,當它的NULL也不應該遵守它。它會導致任何體面系統上的seg故障。並且,請不要在未來使用大寫鎖定。 –