请问一下 在c语言中 用malloc分配一段空间给一个指针p后,free(p)与p=null;作用相同嘛?

free实际上是有一个尾指针,把尾指针指向了动态分配空间的头部了嘛?

一般是free之后,再p=null 作用是不相同的
free 是告诉系统,这块空间我不同了,系统你可以把它分配给其他程序。
p=null 只是把指针指向空,而原来分配的内存并没有free,系统就以为你还在用,这样这块内存就没法释放,也就是内存泄露了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-06
不相同,前者是释放malloc分配的空间。
后者是赋值,即使是NULL,也是一种赋值方式。
第2个回答  2011-09-06
我老师说不相同 free(p)是释放p指向的 数据 p=null是p为空
第3个回答  2011-09-06
当然不同了,free(p)是将malloc分配的空间释放,p=null是将这个指针置空
第4个回答  2011-09-06
不相同, p=NULL只是让P指向NULL, free(p)释放了P本来所指向那一段内存。特别是堆内的
相似回答