猿问

”悬空指针“的怪异现象!!

看起来有问题,但是运行起来却没有问题,
/*我的代码*/
#include
#include
#include
intmain()
{
char*p=NULL;
p=(char*)malloc(4*sizeof(char));
free(p);/****这里已经释放了p指向的内存块****/
strcpy(p,"abc");
printf("%s\n",p);
retrun0;
}
/*free(p)释放了p指向的内存块,但是并没有改变p本身。于是产生了悬空指针,此时
p不再指向有效的内存块,strcpy函数修改了p指向的内存块,却没有造成程序崩溃,为啥?****不科学啊?*/
本人再MacOSX10.9上编译,运行却没有出错。求解释》》》!!!
梵蒂冈之花
浏览 438回答 2
2回答

绝地无双

通俗点说,你吃完了雪糕把木棍扔在垃圾桶里,往前走了两步突然灵光一现,又回去垃圾桶把木棍捡出来舔一下。你看,只要你动作够快,在垃圾车收垃圾之前是能在垃圾桶里找回来那根木棍的但显然的使用free掉的内存和舔垃圾桶里捡来的木棍一样脑残,说不定你就捡到别人扔的木棍了
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答