假设我正在编写一个 C++ 类。该类具有以下字段:
- 一个整数。
- 一个 C++ 字符串
- 动态调整大小的整数数组和指向它的指针。
在析构函数中,我知道我必须delete
通过调用new
. 在这种情况下,我知道我必须释放用于 int 数组的空间。字符串的内存呢?我知道我不负责释放它的内存,因为我没有调用new
分配它,但是它是如何被释放的呢?C++ 什么时候调用它的析构函数?
假设我正在编写一个 C++ 类。该类具有以下字段:
在析构函数中,我知道我必须delete
通过调用new
. 在这种情况下,我知道我必须释放用于 int 数组的空间。字符串的内存呢?我知道我不负责释放它的内存,因为我没有调用new
分配它,但是它是如何被释放的呢?C++ 什么时候调用它的析构函数?
字符串的内存呢?我知道我不负责释放它的内存,因为我没有调用 new 来分配它,但是它是如何被释放的呢?
您的类的析构函数隐式调用std::string
' 析构函数,后者又处理释放自己的资源。没有什么可担心的。
C++ 什么时候调用它的析构函数?
当你的类的对象的析构函数被调用时。这意味着当该对象超出范围或delete
在由new
.
我以某种方式理解你的问题。您可能会认为new
递归new
s 是您班级的成员。不,它不是那样做的。除非您的类本身new
对成员变量进行处理,否则您需要调用delete
它们。
一旦实例析构函数完成,成员变量的析构函数就会自动调用。
当变量超出范围时,该内存将被回收。