对 NULL 指针连续 free多次会出错吗?为啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对 NULL 指针连续 free多次会出错吗?为啥?相关的知识,希望对你有一定的参考价值。
理论上对空指针free多次无错,free就是让此指针所指向的动态分配区标志为可用,即让系统从新标识(由系统完成),可参见free源码。一般free后,立即将指针置为空,防止野指针出现,而在使用该指针时加上NULL判断则可避免出错。 参考技术A 1.没分配内存的,可以连续多次free
2.分配内存的不能连续多次free;第一次free后置为NULL了,满足情况1,就可以进行连续free了
我去再了解一下,为什么 参考技术B free只能用一次。 参考技术C 对同一块内存只能一次
malloc/free函数
一、malloc
函数原型:void *malloc(unsigned int size);
功 能:在内存的动态存储区中分配一个长度为size的连续空间。
返 回 值:指向所分配的连续存储域的起始地址的指针,若失败,返回NULL
二、free
函数原型:void free(void *p);
功 能:释放指针p所指向的内存区
返 回 值:无
注意:判断内存是否分配成功是重点。
malloc
函数返回类型时
void
*, 只会是一个合法的指针或者NULL指针.
1 int *p = NULL; 2 3 if ((p = (int *)malloc(size)) != NULL) 4 { 5 //正常情况,申请成功 6 } 7 else 8 { 9 //这里处理未申请成功的情况 10 } 11 free(p);
以上是关于对 NULL 指针连续 free多次会出错吗?为啥?的主要内容,如果未能解决你的问题,请参考以下文章
求助 一个指针被free之后啥时候是NULL?还是不可能是NULL?