free()释放的时候指针只有在程序结束时才被销毁??为什么不是,局部变量,函数结束后就销毁了???
1条回答 默认 最新
- shen_wei 2016-12-02 09:31关注
void Fun() { int *pData = (int *)malloc(100); if (pData == NULL) { exit(1); } for (int i = 0;i < 25;i ++) { pData[i] = i; } free(pData); pData = NULL; } int main() { Fun(); return 0; }
free()释放的是指针指向的内存!注意!释放的是内存,不是指针!这点非常非常重要!指针是一个变量,只有程序结束时才被销毁。释放了内存空间后,原来指向这块空间的指针还是存在!只不过现在指针指向的内容的垃圾,是未定义的,所以说是垃圾。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报