【发布时间】:2013-07-01 22:03:01
【问题描述】:
假设我正在编写一个 C++ 类。该类具有以下字段:
- 一个整数。
- 一个 C++ 字符串
- 可动态调整大小的整数数组和指向它的指针。
在析构函数中,我知道我必须 delete 之前通过调用 new 声明的任何内容。在这种情况下,我知道我必须释放用于 int 数组的空间。字符串的内存呢?我知道我不负责释放它的内存,因为我没有调用new 来分配它,但是它是如何被释放的呢? C++ 什么时候调用它的析构函数?
【问题讨论】:
-
当它超出范围时,就像你的类的析构函数一样。
-
顺便说一句,你应该用
std::vector<int>实例替换你的“动态调整大小的整数数组”——现在你甚至不必删除数组,你可能可以完全省略你的析构函数。记住单一职责原则:你的类应该对它设计的任何事情负责,将内存管理留给为特定范围编写的类。
标签: c++ memory-management