使用C++中使用"new"创建的指针进行内存管理
Memory management with pointers created using "new" in C++
我有一个基类,在头文件中声明了2个指针。然后在基类的方法中使用"new"关键字初始化指针,并在基类的析构函数中使用"delete"删除指针。
我还有一个继承自基类的派生类。这里我也声明了一个指针。根据布尔值的不同,该指针被赋值给基类的任意一个指针。但是,当调用基类的析构函数时,这会导致段错误。
我的理解是,发生这种情况是因为派生类将在调用基类的析构函数之前自动删除指针。当在基类中调用"delete"时,该内存区域已经被释放,并导致段错误。
正确的做法是什么?我的目标是在派生类中有一个指针,它可以灵活地等于基类中初始化的指针之一。
要么不删除派生类中的指针,要么使用标准智能指针std::shared_ptr
您的基类可能应该有一个虚析构函数,那么您应该在派生类中重写析构函数,以确保所有内容都按照您期望的顺序删除。
但是不看代码很难知道发生了什么,所以这只是一个想法…
相关文章:
- 使用"Task"函数指针队列定义作业管理器
- 向量成员在管理类指针C++队列时丢失
- 函数指针和 lambda 的内存管理
- 如何将指针从unique_ptr传递到另一个对象并管理寿命
- 哪些资源是由智能指针管理的,而它们的内存不是由new分配的
- 底层指针和内存管理
- 坚持将双指针管理的内存复制到二维数组
- 智能指针,避免使用QNetworkAccessManager时进行手动内存管理
- 循环和内存管理中的指针算术C++?
- 可以通过非原始指针来增强容器矢量管理内存
- 管理到本机值类转换:强制转换指针是否安全?
- 指针的一系列指针:管理不同语言的字符串
- C 11 / 14-是否有针对其他地方管理的资源的原始指针包装器
- 编写安全包装类以管理用户定义对象的指针
- C++ |方法范围指针管理
- 如何在将指针传递给库函数时处理内存管理
- C++管理单一实例中的堆/指针
- 学生成绩管理系统 在C++中,表达式必须具有指向对象类型的指针
- 使用智能指针管理函数内分配的内存
- 原始指针管理