C语言问题 动态内存malloc 的分配问题,我用内嵌函数产生了一个动态数组,应为在主函数中会用到这个数组

所以不能在内嵌函数中马上释放

当到最后把结果保存到tx中的时候,整个函数结束
现在就需释放内存
请问怎样释放

long double *array1(int x)//使用返回指针能正确分配内存地址
{
long double *a;
a=(long double*)malloc(sizeof(long double)*x);
if(a==NULL)
exit(0);
for(int i=0;i<x;i++)
*(a+i)=0;

return a;

}

比如调用了函数之后将地址保存

long double *a = array1(x); //此处保存了动态分配的地址

等到需要释放的时候
free(a);

如果函数返回的并不是 动态内存的地址
那么你就应该再传额外的参数进去,比如
int array2(int b, int **p) //p是指针的指针
{
*p=(int*)malloc(sizeof(int));
//....省略
return value;//返回某一个值
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-15
仅仅是一个方法:
在主调函数里定义一个指针ptr;
在调用的函数里 ptr=数组的指针;
该删的时候删了ptr所指的内存空间就好了追问

long double *array1(int x)//使用返回指针能正确分配内存地址
{
long double *a;
a=(long double*)malloc(sizeof(long double)*x);
if(a==NULL)
exit(0);
for(int i=0;i<x;i++)
*(a+i)=0;

return a;

}

举个列嘛,比如上面的是一个内嵌函数,

第2个回答  2011-08-15
只要一个指针指向开辟来的空间,哪个地方都能释放。
第3个回答  2011-08-15
free()啊追问

我知道是free
但是我是在另一个函数里面进行的动态内存分配
最后执行主函数结束,我可以在主函数里面释放内嵌函数的动态内存嘛??

追答

那你可以在主函数分配内存啊

相似回答