矢量分配混乱

我有以下类型的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