- 论坛徽章:
- 0
|
本帖最后由 bsdc 于 2015-01-21 15:00 编辑
请教下各位达人:关于一个比较长的函数内存释放问题
大致结构这样:- void Free(void **ptr)
- {
- if (*ptr != NULL) {
- free(*ptr);
- *ptr = NULL;
- }
- }
- func()
- {
- a = NULL, b = NULL;
- a=malloc();
- ......
- if (exp)
- goto ret;
- ......
-
- b=malloc();
- ......
- if (exp)
- goto ret;
- ......
- Free(&a); //xxx
- ......
- Free(&b); //yyy
- ......
- ret:
- Free(&a);
- Free(&b);
- }
复制代码 为什么要在注释xxx和yyy处先释放,主要是分配的内存比较大,想及时释放,然后又怕中间很多goto,漏了free,所以搞了个Free函数,这样可以确保肯定能释放掉,也就是宁可多写几个,绝不漏释放,反正我Free释放后把指针置NULL了,下次再释放也会判断,不会double free,测下来还可以,不知道这样可行吗,请高人指正。 |
|