c++的析构函数问题
C++ Problems with destructor
我有一个问题,我不知道解决方法,需要你的帮助!提前感谢!
这里是我的类(类没有被完全复制)
#ifndef _CGRAPH_H_
#define _CGRAPH_H_
class Cgraph{
typedef std::list<int> vlist;
typedef std::map<int, int > vidmap;
typedef std::map<int, std::string > vutfmap;
typedef std::map<int, vlist > vmap;
typedef std::map<int, vlist >::iterator vmap_it;
int frequency;
private:
vidmap vertices;
vutfmap utf;
vmap wattackedges; // label 0
vmap battackedges; // label 1
vmap defendedges_label2;
vmap defendedges_label3;
vmap bdefendedges_label2;
vmap bdefendedges_label3;
std::string eLine(int, int, int);
std::string vLine(int, int);
public:
Cgraph(){
};
~Cgraph(){ delete &vertices;
delete &utf; delete &wattackedges; delete &battackedges;
delete &defendedges_label2; delete &defendedges_label3;
delete &bdefendedges_label2; delete &bdefendedges_label3;};
在主方法中,我按照
Cgraph *graph = new Cgraph();
delete graph;
然后我得到这个错误报告
*** Error in `./chess': double free or corruption (out): 0x00007ffffebb1340 ***
Aborted (core dumped)
您从未显式地动态分配new
给这些成员,因此您不应该对它们进行delete
。因为这些成员都有析构函数来处理清理,所以不需要析构函数。
map将在内部创建所需的内存,当调用map的析构函数时,也将调用map的析构函数并清除所有数据。
http://www.cplusplus.com/reference/map/map/地图/
相关文章:
- 类中C++析构函数的 Xcode 问题
- 为什么我以前调用析构函数的方式会导致模因问题
- 二叉搜索树析构函数问题
- 与C++析构函数相比,C#析构函数和GC并没有真正解决问题
- C++二进制树递归析构函数问题
- 我不明白析构函数有什么问题?
- 创建'new'实例可以解决析构函数崩溃问题?
- c++析构函数解分配问题
- 为什么我的析构函数导致我的链表出现问题
- 析构函数问题 + 列表显示
- 崩溃,可能是由于构造函数或析构函数中的某些问题
- 通用二进制树节点析构函数问题
- 析构函数的 AVL 树内存问题
- 标量删除析构函数问题
- 在我的程序中"无符号"之前的预期主表达式(析构函数和构造函数问题)
- 未调用析构函数,程序异常退出时出现问题
- C++和析构函数(嵌套类和一般问题)
- 提升::p ython 受保护的析构函数问题
- c++的析构函数有问题
- c++问题析构函数