注意: free函数释放动态内存空间之后,并不会自动将指针置为空指针
请找出以下代码的错误,并改正代码
#include<stdio.h>
#include<stdlib.h>
void Test(void)
{
char* str = (char*)malloc(100);
strcpy(str, "hello");
free(str);
if (str != NULL)
{
strcpy(str, "world");
printf(str);
}
}
int main()
{
Test();
return 0;
}
代码的输出结果是:“world”,因为free函数只是释放了动态内存空间,并没有把指针置为空,所以str依然不等于空指针,所以进入if函数,并拷贝了“world”。