C++内存管理:谁负责
C++ Memory Management: Who is responsible
假设我正在编写一个C++类。该类具有以下字段:
- 一个整数
- C++字符串
- 可动态调整大小的整数数组和指向它的指针
在析构函数中,我知道我必须delete
——我之前通过调用new
声明的任何内容。在这种情况下,我知道我必须释放用于int数组的空间。字符串的内存呢?我知道我不负责释放它的内存,因为我没有调用new
来分配它,但它是如何释放的?C++什么时候调用它的析构函数?
字符串的内存呢?我知道我不负责释放它的内存,因为我没有调用new来分配它,但它是如何被释放的?
类的析构函数隐式调用std::string
的析构因子,后者又处理释放自己的资源。没什么可担心的。
C++什么时候调用它的析构函数?
当调用类的对象的析构函数时。这意味着当该对象超出范围时,或者当new
创建该对象时,在指向该对象的指针上调用了delete
。
不知怎么的,我理解你的问题。您可能认为new
递归地new
是您类的成员。不,它不是那样做的。除非您的类本身对成员变量执行new
,否则您需要对它们调用delete
。
当变量超出范围时,会回收内存。
相关文章:
- 当vector是tje全局变量时,c++中vector的内存管理
- 我有一个线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)错误.我认为这是由于内存管理不好.我可以
- C++将字符串传递给 C 库以进行内存管理
- 从函数返回时C++内存管理
- 函数指针和 lambda 的内存管理
- 自定义内存管理器在发布模式下工作正常,但在调试模式下则不然
- C++中的内存管理
- C和C++中的内存管理有什么区别
- 字符 * 未从重载运算符或内存管理问题正确返回
- 如何在源代码中使用执行策略检测 C++17 的扩展内存管理算法的可用性?
- 底层指针和内存管理
- 智能指针,避免使用QNetworkAccessManager时进行手动内存管理
- c++中的内存管理问题
- 使用矢量时的内存管理
- 循环和内存管理中的指针算术C++?
- C++堆栈内存管理问题
- C 内存管理中的课程如何管理 - 研究
- 不可变数据模型的内存管理
- C++ 使用数组初始化时的 STL 向量内存管理
- SFML 纹理内存管理