矢量分配混乱
我有以下类型的Tree类
class Tree{
private:
Node *root; // trie root node
unordered_map<int, vector<Node*> > *index;
unsigned long long size;
int count;
public:
................
};
我有一个以下类型的向量
vector<Tree> vect;
通过上面的声明,我在遇到一个分段错误时,将许多节点添加到每个树中。
但是,当我使用下面的声明时,完全相同
vector<Tree*> vect;
并使用new在堆上明确分配每个Tree *指针
分段错误看起来好像是由于堆栈的内存利用率过高而发生的。
从堆栈溢出的前一个问题中,我被告知,在第一个声明中,每个树对象都将被分配到堆上。
对此有何想法?
用你的小代码,我想你的拷贝构造函数和operator =有问题。 每次在向量中添加新项目时,都会有一个副本调用。 在指针向量的情况下,没有问题,但是对于你的类,你的指针和地图会有问题。 正确实施这些方法并重试。
链接地址: http://www.djcxy.com/p/82981.html上一篇: vector allocation confusion
下一篇: java heap allocation: error during initialization of VM for different user