看起来有问题,但是运行起来却没有问题,/*我的代码*/#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上编译,运行却没有出错。求解释》》》!!!
绝地无双
相关分类