中易网

C语言,free(p)后,是否一定要再加一句p=NULL才算是内存释放完成了??多谢多谢!

答案:3  悬赏:40  
解决时间 2021-01-12 02:43
  • 提问者网友:伴风望海
  • 2021-01-11 06:55
C语言,free(p)后,是否一定要再加一句p=NULL才算是内存释放完成了??多谢多谢!
最佳答案
  • 二级知识专家网友:怙棘
  • 2021-01-11 07:24
不是这样的,释放p,并不是指p的内存释放,而是指p所指向的内存释放,而且释放是指对所指向的内存空间不提供读写的权限而已。当你释放p所指向的内存之后,变量p中一定还存放着地址,如果所指向的内存空间被释放掉了,在*运算的话就没有权限,会提示出错。所以为避免这种错误,一般将释放掉而又没重新赋值的指针赋值为空(NULL)使他不指向任何内存空间。
全部回答
  • 1楼网友:舊物识亽
  • 2021-01-11 08:54
不是的,free(p)就释放了。
p=NULL;是好的编程习惯,不用的指针设成NULL,这样程序运行时如果这里出错就直接崩溃。
崩溃总比混乱好。
  • 2楼网友:笑迎怀羞
  • 2021-01-11 08:43
free(p)是释放p指针指向的内存,
而p==NULL(0)是说指针p不指向任何内存,这句话一般不用加,
因为p一般都是局部变量,函数执行完毕,会自动释放。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息