当结构增长时,指向向量中的元素的指针被设置为NULL

时间:2015-01-26 23:52:00

标签: c++ arrays pointers vector

指向对象的指针设置为NULL,尽管函数中的任何位置都没有pointerToObj = NULL。后来我使用该指针进行处理,它会导致访问冲突异常。我还添加了一个测试指针,看它是否会保留它的值,但是没有 - 两者同时都设置为NULL。

指针指向向量中的对象。有一次,我向向量添加了一个新对象,因此结构增长了。在此之后,指针被设置为NULL。我测试了这个 - 所有指向向量的某个元素的指针,在我添加新对象后立即设置为NULL。

我怀疑这是因为Vector的工作方式 - 如果我没有弄错的话,它们是基于Stack的。当一个堆栈必须自己延长时,它必须将自己复制到一个新的更大的数组中并删除旧的数组。但现在新数组位于内存中的其他位置,因此我的指针不再指向正确的位置。

这是真的吗?

1 个答案:

答案 0 :(得分:2)

是的,向std::vector添加元素可能会因为您描述的原因而无效指向其元素的指针(但它与堆栈没有任何关系)。你的指针并没有神奇地设置为null,它只是指向一个不存在的对象。