尽管函数中没有任何地方存在pointerToObj = NULL
,但指向对象的指针被设置为NULL。后来,我使用该指针作为参数,并导致访问冲突异常。我还添加了一个测试指针来查看它是否会保留它的值,但是没有 - 两者同时被设置为NULL。当结构增长时,指向矢量中某个元素的指针将被设置为NULL
指针指向矢量中的对象。有一点,我向向量添加一个新对象,所以结构增长。在此之后,指针被设置为NULL。我测试了这一点 - 所有指向vector的某个元素的指针,在添加新对象后立即设置为NULL。
我怀疑这是因为Vector的工作方式 - 如果我没有弄错,他们是基于堆栈。当一个堆栈必须加长时,它必须将自己复制到一个新的更大的数组中,并删除旧数组。但是现在新的数组位于内存中的其他位置,所以我的指针不再指向正确的位置。
这是真的吗?
'std :: vector'不能以你描述的方式工作,即将外部指针设置为NULL。您需要发布此行为的代码。 – 2015-01-27 00:49:47
你确认指针实际上是否设置为NULL? **如何?(最小代码示例?)解除引用空指针会导致访问冲突(在Windows上),反之则不然。访问冲突发生在所有无效指针上,而不仅仅是空指针。 – MSalters 2015-01-27 01:01:18