Free函数使用的误区
一、题目
请说出以下代码的输出结果,并说明原因。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void Test(void)
{
char* str = (char*)malloc(100);
strcpy(str, "welcome");
free(str);
if (str != NULL)
{
strcpy(str, "world");
printf("%s",str);
}
else
{
strcpy(str, "hello");
printf("%s",str);
}
}
int main()
{
Test();
return 0;
}
二、结果与分析
Free函数释放Malloc申请的堆内存空间,但不释放指向堆内存空间的指针,所以指针依旧不是野指针,结果输出:world