std :: vector的奇怪行为

时间:2010-05-27 19:21:17

标签: visual-c++ stdvector visual-c++-2008 release-mode debug-mode

我有一个这样的课程:

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);

这是我的代码的简化版本。 问题是在调试模式下它完美无缺。 但在发布模式下,它会在“push_back”行崩溃。 (所有优化标志都关闭) 我在发布模式下调试它,问题出在A的构造函数中。 矢量的大小是非常大的虚拟值,当我清除它时,它不会改变......

你知道为什么吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

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