C语言动态存储分配问题

在被调函数中我动态分配了一个空间,问在这个被调函返回主调函数之后那块动态分配的空间被释放了吗?如果我不用free把它释放的话。... 在被调函数中我动态分配了一个空间, 问在这个被调函返回主调函数之后那块动态分配的空间被释放了吗?如果我不用free把它释放的话。 展开
 我来答
匿名用户
2013-10-26
展开全部
Note1:
任何程序被执行前, 操作系统会切一整块内存给它用. 程序结束後整块都会回收.
动态分配是位於切给程序用的那块内存之中.
若用malloc取得空间而未用free释放, 只会影响到运行中的自己这个程序.
Note2:
所谓生存期是指宣告在函数中的变数自己所占的空间(位於stack中)
而malloc所分配的空间是在heap之中.
指针的生命期过了以後, 若之前所指的区域未free, 那块heap中的空间仍未回收.
不过这个stack和heap都位於切给程序用的一整块空间之中,
程序结束後操作系统会整块收回. 没有什麼泄漏的事.
Note3:
程序结束後有可能还保留内存, 但这是透过对操作系统做特别的调用才有这种事.<br>malloc只作用在配给程序的那一整块内存之内.<br> </div> <div class="replenish min_margin"> <dl> <dt> 追问: </dt> <dd> 谢谢高手的赐教!我又有了新的困惑:操作系统如何决定在内存中分配多少空间给这个程序的?还有 <br/> <br/> 内存泄露会产生什么效果?请问高手是香港人还是台湾人? </dd> </dl> <dl> <dt> 回答: </dt> <dd> 我在台湾, 但团队中的团员几乎都在内地.<br>Note4:<br>应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。<br>这是程序执行中的问题, 结束後就没泄漏的事了.
Note5.
操作系统中的loader依.exe中所记录的要求分配内存给程序.
.exe中所记录的要求是linker记入的. </dd> </dl>
匿名用户
2013-10-26
展开全部
如果是传入一个指针的指针获取内存,需在返回主函数中处理后释放。
若是一个函数内的指针申请内存,需要在该函数内free, 否则会内存泄露。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-26
展开全部
动态分配的那块内存,如果你不free,知道程序运行终止太才结束,要不然会一直存在!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式