C语言 调用函数完后释放内存吗?

 我来答
历恬美臧龙
2020-03-21 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:33%
帮助的人:716万
展开全部
肯定会释放了,函数调用完成后,函数里的所有局部变量将会被释放。但是你写的这个程序根本就有问题。你所返回的只是一个地址空间,所以一直没变,释放指的是将这个地址里的内容清除掉,以便使其它的数据可以用这个地址的内存。如果没释放的话,其它的数据就用不了这个址址了。
c的内存泄露主要是出在指针上面。对于变量,系统都会在用完后自动释放的。
任藻纵韶
2020-02-03 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:33%
帮助的人:681万
展开全部
1.不可以,释放内存不是指内存地址没了,地址还是那个地址,只不过这个地址里面的数据可以被随意更改了,不确定了。
2.它都是从一个固定的内存区域里分配的,所以在你不干其它事情时,这个内存地址不会变。
3.变量会被释放,但是你申请的内存不会被释放,不管C\C++都是这样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
玉碧蓉尉囡
2019-12-16 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:33%
帮助的人:569万
展开全部
您好,楼上说的不准确,也不是很完整。
关于用malloc分配的内存,在调用free释放后,该内存的状态,有以下几点说明:
1.调用free释放掉所分配的内存后,表明该内存可以被别人使用,也就是说,其他地方调用malloc后,可以分配到该内存
2.关于free释放该内存后,该内存中的数据,我们只能认为是脏数据;也就是说,这部分数据可能存在并且维持原来的值,也可能被清空,或者被修改为其他值;
由此可见,有很多中可能情况,所以,在释放了该内存后,除了要对当时分配的指针赋值为null,还要注意不要再去引用这部分内存,不要尝试获取这部分的值,这些已经非法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
彭飞薇答世
2019-12-17 · TA获得超过3万个赞
知道小有建树答主
回答量:1.1万
采纳率:28%
帮助的人:657万
展开全部
区分内存类型,有不同结果:
1
局部变量。
即在函数内部定义的变量,且变量不带static修饰。这时,在退出函数后,变量自带内存会自动释放。
2
静态变量。
函数内部定义的带static修饰的变量为静态变量,这种变量在函数退出后不会释放内存,直到程序退出时一起释放。
3
动态分配内存。
指通过malloc,calloc,zalloc等函数申请的内存空间,这类空间在退出函数后不会自动释放,要释放只有通过free函数的调用,进行内存释放。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式