【发布时间】:2012-01-05 20:34:57
【问题描述】:
当向量需要更多内存时,它会在某个地方重新分配内存,我还不知道在哪里!然后指针变得无效,对此有什么好的解释吗?
我的意思是他们去了哪里,我的容器会发生什么? (不是链表的)
【问题讨论】:
-
一些代码来证明这一点会很有用...
-
我认为这可能是个问题:
std::vector<int> foo(10); int *ip = &foo.front();。重新分配可能会使*ip失效,对吧?但是,您不应该以这种方式滥用 std::vector。使用迭代器。 -
Protip:使用索引而不是指针。
-
@zerm 重新分配也会使迭代器无效。顺便说一句,它不会使
*ip失效,当然只会使ip失效。 -
@ChristianRau 是的,对不起,你在这两个方面都是绝对正确的。
标签: c++ pointers vector memory-management