代码之家  ›  专栏  ›  技术社区  ›  Nima

std::vector的怪异行为

  •  0
  • Nima  · 技术社区  · 16 年前

    class OBJ{...};
    
    class A
    {
       public:
       vector<OBJ> v;
       A(int SZ){v.clear(); v.reserve(SZ);}
    };
    
    A *a = new A(123);
    OBJ something;
    a->v.push_back(something);
    

    这是我代码的简化版本。 调试模式是完美的。 但在释放模式下,它会在“推回”线上崩溃。(关闭所有优化标志) 我在release模式下调试了它,问题出在A的构造函数中。 向量的大小是非常大的,当我清除它时,它不会改变。。。

    你知道为什么吗?

    谢谢,

    1 回复  |  直到 16 年前
        1
  •  0
  •   anon anon    16 年前

    我可以猜测-我可以说OBJ可能没有正确实现的复制构造函数和/或赋值运算符和析构函数。

    推荐文章