请教一个关于std::vector深拷贝的问题?
最近再程序中用到一个vector容器包含的对象含有指针变量, 所以实现了复制构造函数来让vector可以复制指针指向的内容. 但诡异的是程序运行到一点就不往下执行了, 也没提示什么信息. 异常运行结果如图:
正常应该执行100次循环的
下面是测试程序:
struct testClass{
testClass():mNumb(1), ptr(NULL){
ptr = new int(1);
}
testClass(const testClass& other){
this->mNumb = other.mNumb;
this->ptr = new int( *(other.ptr));
}
~testClass(){
if (ptr)
{
delete ptr;
ptr = 0;
}
}
int mNumb;
int* ptr;
};
typedef std::vector<testClass> vecArr;
vecArr::iterator it;
vecArr _vecarr;
int main()
{
// _vecarr.reserve(100);
for (int i = 0; i < 100; i++)
{
testClass test1;
_vecarr.push_back( test1 );
testClass test2;
_vecarr.push_back( test2);
printf("vec size: %d\n", _vecarr.size());
it = _vecarr.begin() + (_vecarr.size()/2);
_vecarr.erase(it);
printf("vec size: %d, capacity: %d \n", _vecarr.size(), _vecarr.capacity());
}
printf("The end");
}