【发布时间】:2014-04-24 08:28:56
【问题描述】:
我有一个基类,其中在标头中声明了 2 个指针。然后在基类的方法中使用“new”关键字初始化指针,并在基类的析构函数中使用“delete”删除。
我还有一个继承自基类的派生类。我也在那里声明了一个指针。根据布尔值,此指针被分配给基类的任一指针。但是,这会在调用基类的析构函数时导致段错误。
我的理解是,发生这种情况是因为派生类会在调用基类的析构函数之前自动删除指针。当在基类中调用“delete”时,这块内存区域已经被释放,导致段错误。
这样做的正确方法是什么?我的目标是在派生类中有一个指针,它可以灵活地等于基类中初始化的指针之一。
【问题讨论】:
-
展示代码(即使只是伪代码)比用散文描述要好。
-
心理调试器说:“你
deleteing 派生和基类中的动态数据”
标签: c++ pointers memory-management