繁体   English   中英

使用C ++中的“new”创建指针的内存管理

[英]Memory management with pointers created using “new” in C++

我有一个基类,在标头中声明了2个指针。 然后在基类的方法中使用“new”关键字初始化指针,并在基类的析构函数中使用“delete”删除。

我还有一个继承自基类的派生类。 我也在那里声明了一个指针。 根据布尔值,此指针被指定给基类的任一指针。 但是,当调用基类的析构函数时,这会导致段错误。

我的理解是,这是因为派生类将在调用基类的析构函数之前自动删除指针。 当在基类中调用“delete”时,此内存区域已被释放并产生段错误。

这样做的正确方法是什么? 我的目标是在派生类中有一个指针,它可以灵活地等于在基类中初始化的指针之一。

要么不删除派生类中的指针,要么使用标准智能指针std::shared_ptr

您的基类应该有一个虚拟析构函数,然后您应该覆盖派生类中的析构函数,以确保按照您期望的顺序删除所有内容。

但是如果不看代码就很难分辨出发生了什么,所以这只是一个想法......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM