Jus*_*ier 127
是的,"内存泄漏"只是一个进程不再具有引用的内存,因此无法再释放.操作系统仍会跟踪分配给进程的所有内存,并在该进程终止时释放它.
在绝大多数情况下,操作系统将释放内存 - 正如Windows,Linux,Solaris等正常"风格"的情况一样.但重要的是要注意在各种实时操作系统等专用环境中程序终止时可能无法释放内存.
Bri*_*ndy 31
执行程序的操作系统通常会清除未明确释放的内存和未明确关闭的句柄,但C++标准无法保证这一点.您可能会发现一些嵌入式设备无法释放内存泄漏.
据说Windows和我见过的所有Linux发行版都可以解决内存泄漏问题.
您可以轻松地创建一个巨大的内存泄漏循环,以自己测试它.观察您的RAM使用量增长然后关闭您的程序.您将看到RAM使用率下降.
使用C++时要考虑的另一个考虑因素是,如果您没有删除堆分配的内存,那么您的析构函数也不会被调用.如果没有调用析构函数,有时你也会有其他副作用.
通常,是的.某些系统支持共享内存块之类的东西,但程序退出时不会自动释放.大多数仍然保留引用计数并在所有打开它的程序退出时删除它,但有一些不会(例如,16位Windows有几种类型的项目,即使没有任何引用也会保留分配 - 尽管它经常因为其他原因而崩溃,之后积累足够的东西导致问题......)
取决于您泄漏的内存。操作系统无法回收某些内存。然而,大多数操作系统上的大部分内存会在进程退出时自动回收。
| 归档时间: |
|
| 查看次数: |
27483 次 |
| 最近记录: |