C++中类被销毁时,其成员指针会自动执行delete操作吗?
类销毁时成员指针不会自动执行delete
不会。
你代码里的Object* b是C++的原生裸指针,它本质上只是个存储内存地址的变量。当类A的对象被销毁时,只会销毁这个指针变量本身(释放它占用的那几个字节的内存),但它指向的Object对象不会被自动调用delete释放——这会导致内存泄漏,那块内存会一直被占用,直到程序结束。
如果希望类销毁时自动释放指针指向的对象,应该使用C++标准库提供的智能指针,比如std::unique_ptr或std::shared_ptr。示例如下:
#include <memory> // 必须包含智能指针的头文件 class A { public: std::unique_ptr<Object> b; // 用unique_ptr替代裸指针 };
当类A的对象被销毁时,std::unique_ptr会自动调用delete释放它指向的Object对象,无需手动处理,能有效避免内存泄漏。
内容的提问来源于stack exchange,提问作者user19226400
相关产品推荐
相关产品推荐

