看个例子:
void test()
{
char* str = (char*)malloc(10);
strcpy(str,"hello");
free(str);
if(str != NULL)
{
strcpy(str,"world");
printf("%s\n",str);
}
}
运行test()会怎样?
答案是会输出 world;因为strf再free后没有置NULL;
一个指针free后不置NULLd的危害?
- 变成“野指针”,指向的内容是垃圾;
- 如果代码后面有if条件,判断指针时候是否为空,if( p != NULL){};那么这个条件判断将失去意义;即使p不等于NULL;p指向的内存是非法的。