malloc申请内存后,整个程序运行结束后是什么情况。

weixin_40290083 2019-11-05 08:03:35
在使用malloc申请堆内存时一直在强调,当所申请的内存不再使用时要使用free释放,否则会造成内存泄露。常见的示例就是在一个自定义函数fun1()中使用malloc申请内存,但是不调用free释放申请的内存,即使fun1()执行完成了,所申请的内存也不会被释放。我的问题是,main调用了fun1(),main和fun1()函数中也没有调用free,并且main执行完毕了,由malloc所申请的内存会被释放掉吗。
...全文
267 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
铖邑 2019-11-05
  • 打赏
  • 举报
回复
嗯,如果可以还是要学一下的,对自己有好处,你可以在C++ C# JAVA里面做一个选择,但最好不要排斥C
weixin_40290083 2019-11-05
  • 打赏
  • 举报
回复
引用 5 楼 SuperDay 的回复:
为什么要转到JAVA,一门一门语言来搞定,学完C再学JAVA也不迟,个别能力超强另说了,可以同时学好几门语言。每个语言都有缺陷,学了一半放弃了,什么能学好呢?
以前学过C,后来学了JAVA,主要用来开发WEB,用的SSH框架,现在有个项目要用到C,
铖邑 2019-11-05
  • 打赏
  • 举报
回复
为什么要转到JAVA,一门一门语言来搞定,学完C再学JAVA也不迟,个别能力超强另说了,可以同时学好几门语言。每个语言都有缺陷,学了一半放弃了,什么能学好呢?
weixin_40290083 2019-11-05
  • 打赏
  • 举报
回复
引用 3 楼 proorck2019 的回复:
会被释放掉,这是操作系统自我保护的措施。发明操作系统时,还没有自动垃圾回收的技术。 如果你实在不喜欢,可以学java。
我只想搞明白这个问题,java的垃圾回收是由GC线程处理的,它不受程序员控制内存回收,确实是解放了程序员,提高了开发效率。
pro_or_check 2019-11-05
  • 打赏
  • 举报
回复
会被释放掉,这是操作系统自我保护的措施。发明操作系统时,还没有自动垃圾回收的技术。 如果你实在不喜欢,可以学java。
weixin_40290083 2019-11-05
  • 打赏
  • 举报
回复
引用 1 楼 gouyanfen 的回复:
[quote=引用 楼主 weixin_40290083 的回复:] 在使用malloc申请堆内存时一直在强调,当所申请的内存不再使用时要使用free释放,否则会造成内存泄露。常见的示例就是在一个自定义函数fun1()中使用malloc申请内存,但是不调用free释放申请的内存,即使fun1()执行完成了,所申请的内存也不会被释放。我的问题是,main调用了fun1(),main和fun1()函数中也没有调用free,并且main执行完毕了,由malloc所申请的内存会被释放掉吗。
main执行完了退出了,系统会释放掉给进程分配的空间,不过这不是一个好习惯[/quote] 这倒是的,如果fun1在一个长期运行的循环中执行,那么就危险了。谢谢
gouyanfen 2019-11-05
  • 打赏
  • 举报
回复
引用 楼主 weixin_40290083 的回复:
在使用malloc申请堆内存时一直在强调,当所申请的内存不再使用时要使用free释放,否则会造成内存泄露。常见的示例就是在一个自定义函数fun1()中使用malloc申请内存,但是不调用free释放申请的内存,即使fun1()执行完成了,所申请的内存也不会被释放。我的问题是,main调用了fun1(),main和fun1()函数中也没有调用free,并且main执行完毕了,由malloc所申请的内存会被释放掉吗。
main执行完了退出了,系统会释放掉给进程分配的空间,不过这不是一个好习惯

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧