是内存泄漏永久的
Are memory leaks permanent?
当一个人在程序中使用malloc并且不会释放内存时,在程序运行和终止后,在计算机上丢失了程序吗?
它取决于操作系统(更确切地说,是您的特定C实现,它隐含包含您的OS(。您需要阅读更多有关OS的信息,例如操作系统:三个简单的作品教科书(可自由下载(。
在Linux,Unix(包括MacOSX,Android等(等现代OS上,Windows等...每个过程都有其自己的虚拟地址空间。当该过程终止时,其整个虚拟地址空间消失(包括任何"内存泄漏"(。
实际上,malloc
和free
是在管理虚拟地址空间的操作系统上方构建的(在Linux上,这些原始词是MMAP(2(& munmap
等系统调用,也许是旧的SBRK(2((和分页。请注意,free
通常不会将内存释放到OS(例如使用munmap
(,但更常见将释放的内存区域标记为可通过未来malloc
-S重复使用的。
但是,避免记忆泄漏是一项良好的学科(对于服务器等长寿命过程至关重要(。然后,诸如Valgrind或地址消毒器之类的工具可以帮助检测它们。
一本关于垃圾收集的好书可为您提供与内存管理有关的概念和术语。还请阅读有关Raii的信息。想想循环引用,智能指针,弱参考等。
(在MS-DOS等旧系统上,可能并非如此,但细节很重要;在某些嵌入式系统上(
相关文章:
- C++功能泄漏内存,我是C++新手,不确定如何解决
- 我的堆栈弹出式磁带的实现是否泄漏内存?
- 将 c++ 向量转换为字符 ** 而不会泄漏内存
- 析构函数 C++ 使泄漏内存
- 构造函数对象赋值是否泄漏内存
- corba :: orb_init泄漏内存
- Gmock泄漏内存
- 如何在不泄漏内存的情况下删除链接列表
- Visual C ODBC关闭记录集泄漏内存
- 为什么泄漏内存比在动态数组上执行 delete[] 慢
- OpenGL正在泄漏内存.哪个对象未释放
- 可以std ::退出泄漏内存
- uiautomation findall泄漏内存
- 为什么在此OpenCL代码中泄漏内存,为什么要泄漏内存
- pthread在完成后会泄漏内存
- win32 标准::线程泄漏内存
- 返回指向同一变量的指针是否会泄漏内存
- 使用clectType(new any_type())可能会泄漏内存泄漏
- Windows开发:如何确定我的应用程序是否正在泄漏内存
- WinHttp打开泄漏内存