一个关于free函数的问题,大家帮忙看看

来源:百度知道 编辑:UC知道 时间:2024/05/05 01:42:54
int main(void)
{
char *str = (char *)malloc(100);
strcpy(str, "hello");
free(str);
if(str != NULL)
{
strcpy(str, "world");
printf("%s\n", str);
}
return 0;
}
请问程序可以执行到 if 语句中么??为什么??指针已经free掉了,为什么还可以执行到
if 语句中??我记得free指针之后,释放指针所指向的内存空间,那么指针也应该不能用了,但是上机实验,不是那么回事,听大家告诉我为什么??

free指针之后,释放指针所指向的内存空间,但是该指针指向的内存地址不变,不是NULL,但是指向的内存已无效不应该再使用。你可以自己赋值NULL,表明指针无效不指向任何内存。

C++中的delete也是一样的。