繁体   English   中英

C ++变量/对象和堆内存管理

[英]C++ variables/objects and Heap Memory Management

我是c ++的新手,我一直在编写在堆内存中创建对象的程序,不幸的是,我从未使用使用new运算符分配的delete运算符来取消分配内存。当系统启动或重新启动时,它将被回收/刷新将来还会分配它并产生诸如“内存不足”之类的内存错误吗?
如果尚未取消分配内存,是否有严重的问题?
直到现在,一旦我验证了结果,我的程序就会变小并终止。
感谢您的答复..:D

从理论上讲,不删除内存可能会导致内存泄漏,该漏洞在程序终止后仍然存在。 实际上,任何现代OS都将在程序退出时自动释放程序分配的所有内存。

但是,这并不意味着不删除内存是安全的。 对象可能具有需要执行重要清理的析构函数。 如果不删除它们,则不会调用它们的析构函数。

在现代C ++中,使用局部变量存储对象(而不是指针),容器和智能指针实际上很容易。 您应该了解它们。

系统启动时,它将被回收/刷新。 程序退出时,操作系统将使用它。 另外,在系统重新启动时也不必担心任何泄漏。

尽管终止程序后内存泄漏不会继续存在于系统的内存池中,但坏习惯是依靠重置来清除丢失的分配。

如果您可以使用更新的C ++ 11编译器并且对防止泄漏感兴趣,建议您从标准库中检查这两个类。 通常,它们的使用将防止动态内存导致最常见的资源泄漏。

std :: shared_ptr

std :: unique_ptr

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM