程序结束后malloc申请的内存会被自动释放吗

我请教一下,程序结束后malloc申请的内存会被自动释放吗?

请问程序结束后malloc申请的内存会被自动释放吗,内存泄漏是由于是申请之后没有释放,然后程序结束了,那段被申请的内存无法被使用造成的呢?还是说malloc申请的内存在程序结束后会被操作系统释放,泄漏是由于在程序使用过程中那段申请的内存在正常使用完毕后未释放造成的,多谢。
另外问一下,这个malloc申请的内存用完是否被释放是跟操作系统有关吧,跟编程语言没有关系吧,多谢。
这个问题我在网上找了下,基本概念说清楚了。都是说手动申请的内存如果没有显式释放就造成泄漏。但是关于泄漏是在运行时造成的内存浪费的还是由于程序结束了那段申请的内存没有被释放造成的浪费没有说清楚。wcpeter1988说的比较清楚可信,感谢大家的回答。欢迎大家继续讨论。
最新回答
浓烈往事

2024-07-03 13:36:27

程序结束后会释放的,运行中不会释放
内存泄漏仅存在于运行时也就是你说的第二个解释。
确实应该跟操作系统有关,程序运行时向操作系统申请空间,在程序没有向操作系统说明时,操作系统不会释放被程序申请的内存空间,
但当程序结束时,所有资源均会被操作系统回收。

还有楼上的,请你们搞清楚再来回答问题。
如果一个程序申请的内存在运行结束时没有被释放,那内存驻留程序是不是也太容易编了?操作系统又不会检查驻留的程序内容。
云终韵

2024-07-03 01:38:59

程序释放的内存是自己申请的内存空间。比如你定义的变量,数组等这些东西,要程序结束时会自动释放内存,但是你自己手动申请的内存,系统是不会释放的。所以用完后一定要记得释放。内存泄露就是这种原因造成的。

虽然windows在这方面加强了,c++也采取了多种方法,但还是要自己释放,程序员应该养成这种良好的习惯。
携余温的黄昏

2024-07-03 02:10:29

C中不会自动释放的,C++中根本用不上这个函数,全自动的。跟操作系统无关,跟编程有关吧。。