【发布时间】:2013-01-31 12:55:00
【问题描述】:
我学习了 C#,现在我正在学习 C++。释放内存的全部意义对我来说是新的,我想知道什么时候需要担心内存释放,什么时候不需要。
据我了解,唯一需要担心内存释放的情况是我使用new运算符时,所以我应该使用delete释放内存。
但是在这些情况下不需要释放内存:
- 类变量(成员)或静态变量。
- 函数中的局部变量。
- STL 系列(字符串、列表、向量等)。
这是真的吗?
还有其他情况需要我担心内存释放吗?
【问题讨论】:
-
一个相关但切题的话题是RAII。
-
最重要的是所有权和对象生命周期(在RAII之上)的概念。尤其是指针(普通和智能)和引用的可用性,您的代码应该清楚地表明哪些对象拥有哪些数据。如果您曾经在程序中使用线程,这一点尤其重要。此外,在您的测试中明智地使用 valgrind 来验证内存清洁度。