|
|
1
22
不是在C中-这就像当船在你周围下沉时重新安排甲板椅。 在C++中,答案是不同的,因为对象可以在其析构函数中删除临时文件等等,因此需要确保调用这些文件。 |
|
|
2
15
|
|
|
3
14
视为
鉴于如果你终止合同而没有
当然
|
|
|
4
13
|
|
|
5
6
实际上,当你的程序发展时,保持整洁是很有趣的。它迫使你在创建“初始化”函数时编写清理函数。当您的程序变得更复杂,并且希望重新启动程序的一部分时,好处就来了。如果您已经编写了工作清理函数,那么在“重新启动”部分程序时,突然忘记一些清理的可能性较小。 只在需要时“懒洋洋”编写清理函数更容易出错。编写清理函数迫使您考虑清理和最终的清理依赖关系。它允许在另一个项目中更容易地重用部分代码。
|
|
|
6
5
如果调用atexit()的代码是动态加载的共享库的一部分(例如,使用dlopen()),则应该释放()。在这种情况下,将在dlclose()时间调用atexit处理程序,因此堆将继续存在,供进程的其余部分使用。 |
|
|
7
2
在Windows上,某些调用返回属于OS或COM的内存,您需要显式释放该内存,否则即使进程终止,也不会释放该内存。但这是一种罕见的情况。 |
|
|
8
1
进程终止前不释放内存不是内存泄漏。当你失去一个句柄时,这是一个内存泄漏。但内存并不是唯一的资源类型,其他资源在进程间持久存在(如窗口句柄和文件句柄),因此您确实需要“释放”这些资源。 |