C语言 指针的释放有关问题
C语言 指针的释放问题
我要写一个C语言函数,返回值是一个在此函数内部malloc的指针变量,请问这个指针我应该什么时候释放?如何释放?
我想,不可能在函数return前调用free释放,这样返回这个指针就没有意义
可是这个函数返回后,我还能再操作这个指针进行free吗?
------解决方案--------------------
我要写一个C语言函数,返回值是一个在此函数内部malloc的指针变量,请问这个指针我应该什么时候释放?如何释放?
我想,不可能在函数return前调用free释放,这样返回这个指针就没有意义
可是这个函数返回后,我还能再操作这个指针进行free吗?
------解决方案--------------------
- C/C++ code
你可以直接free返回去的那个。。。比如TestMalloc返回一个malloc的指针 char *p = TestMalloc(); free(p);//
------解决方案--------------------
使用malloc分配的内存是从堆上分配的,跟是否是在函数内分配无关,所以可以在从该函数返回后,再调用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; }
------解决方案--------------------