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

所以不能在内嵌函数中马上释放当到最后把结果保存到tx中的时候,整个函数结束现在就需释放内存请问怎样释放... 所以不能在内嵌函数中马上释放

当到最后把结果保存到tx中的时候,整个函数结束
现在就需释放内存
请问怎样释放
展开
 我来答
seamaswong
2011-08-15 · TA获得超过1122个赞
知道小有建树答主
回答量:483
采纳率:0%
帮助的人:381万
展开全部
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;//返回某一个值
}
LawlietCTW
2011-08-15 · TA获得超过118个赞
知道答主
回答量:143
采纳率:0%
帮助的人:102万
展开全部
仅仅是一个方法:
在主调函数里定义一个指针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;

}

举个列嘛,比如上面的是一个内嵌函数,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小飞花儿的忧伤
2011-08-15 · TA获得超过1661个赞
知道小有建树答主
回答量:1152
采纳率:100%
帮助的人:329万
展开全部
只要一个指针指向开辟来的空间,哪个地方都能释放。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
978768269
2011-08-15
知道答主
回答量:15
采纳率:0%
帮助的人:6.7万
展开全部
free()啊
追问
我知道是free
但是我是在另一个函数里面进行的动态内存分配
最后执行主函数结束,我可以在主函数里面释放内嵌函数的动态内存嘛??
追答
那你可以在主函数分配内存啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式