首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言 指针的释放有关问题

2012-04-04 
C语言 指针的释放问题我要写一个C语言函数,返回值是一个在此函数内部malloc的指针变量,请问这个指针我应该

C语言 指针的释放问题
我要写一个C语言函数,返回值是一个在此函数内部malloc的指针变量,请问这个指针我应该什么时候释放?如何释放?
我想,不可能在函数return前调用free释放,这样返回这个指针就没有意义
可是这个函数返回后,我还能再操作这个指针进行free吗?

[解决办法]

C/C++ code
你可以直接free返回去的那个。。。比如TestMalloc返回一个malloc的指针char *p = TestMalloc();free(p);//
[解决办法]
使用malloc分配的内存是从堆上分配的,跟是否是在函数内分配无关,所以可以在从该函数返回后,再调用free进行释放.
[解决办法]
探讨

你是说这个函数返回后我还可以再操作这个指针进行free?
这个指针不是这个函数的局部变量吗?
不好意思,有点晕了

引用:

可以的

[解决办法]
C/C++ code
#include   <stdio.h> #include   <stdlib.h> #include   <malloc.h> char* test(int len){    char* p = NULL;        p = (char*)malloc(len);//申请内存    return p;}void main(){    int len = 5;    char str0[] = "123";    char *pTemp = NULL;    pTemp = test(len);    memcpy(pTemp, str0, strlen(str0));    free(pTemp);//用完以后释放    pTemp = NULL;    return;}
[解决办法]
探讨

你是说这个函数返回后我还可以再操作这个指针进行free?
这个指针不是这个函数的局部变量吗?
不好意思,有点晕了

热点排行