当malloc()为一个函数的局部指针分配内存时, 还需要用free()明确的释放吗?

 我来答
百度网友e30ddfb
2015-08-31 · TA获得超过4980个赞
知道大有可为答主
回答量:2232
采纳率:100%
帮助的人:183万
展开全部
是的。记住指针和它所指向的东西是完全不同的。局部变量在函数返回时就会释放, 但是在指针变量这个问题上, 这表示指针被释放, 而不是它所指向的对象。用 malloc() 分配的内存直到明确释放它之前都会保留在那里。一般地, 对于每一个 malloc() 都必须有个对应的free()调用。
生无号0e
2016-05-10 · 知道合伙人人力资源行家
生无号0e
知道合伙人人力资源行家
采纳数:407 获赞数:31041
2008年9月-2011年7月 民航上海中等专业学院,专业民航运输

向TA提问 私信TA
展开全部
局部变量在函数返回时就会释放, 但是在指针变量这个问题上, 这表示指针被释放, 而不是它所指向的对象。用 malloc() 分配的内存直到明确释放它之前都会保留在那里。一般地, 对于每一个 malloc() 都必须有个对应的free()调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
63278146
2015-09-01 · TA获得超过204个赞
知道小有建树答主
回答量:504
采纳率:100%
帮助的人:193万
展开全部
其实做到动态开辟分配并且释放是很难的 在大程序中你要考虑你开辟的内存空间何时才能释放 比如很长一段时间可能不会用 如果你不释放那么这段空间就一直在 无疑降低了你内存使用率 但是可能又会马上要用 你释放了又得开辟 所以这个释放问题你得考虑空间和时间 孰轻孰重了
所以java 和 C++分别都有垃圾回收器和析构函数来做这个 不要程序员来做 当然这降低了运行效率 (linus就这样说C++ 他极其不喜欢C++)
如果你是在函数中开辟的 而且没有释放 因为你还想用 所以你这个函数应该返回开辟空间首地址(有可能你形成链表使用)并且应该付给一个指针变量 如果不返回 这段空间就在内存中消失 直到你释放或者整个程序退出 这就是所谓的(内存泄露)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式