vector
最近,我很困惑为什么我在尝试访问某些对象的指针中的元素时不断面临分段错误。我没有设法解决这个问题,但我怀疑这是因为在我将对象指针推入 avector
之后,我调用delete
了它,认为vector
存储了一个副本。
在以下代码中:
std::vector<SomeObject *> testvector;
SomeObject * testobject = new SomeObject(/* some arguments here, call constructor */)
testvector.push_back(testobject);
delete testobject; // does this affect the element in the vector?
调试器确认添加到向量中的指针确实具有正确的数据,但是一旦我对它们调用 delete,我不确定向量内的元素是否受到影响。向量是否只存储一个副本?当我在对象上调用 delete 时,我怀疑在向量中的指针上调用了 delete,但我不确定。
现在我尝试在调用 delete 后打印出向量中的数据,我得到了这个:??? ?? ??????
而且我假设对删除的调用影响了向量元素。是这样吗?我认为在添加指向向量的指针后,我可以安全地释放对象而不影响向量中的元素,但似乎我最终访问了不再分配的内存。删除调用会影响向量中的指针吗?