【发布时间】:2015-08-26 14:20:33
【问题描述】:
一次,我创建了一个指向std::vector 的指针,然后我对该向量进行了一些push_back、reserve、resize 操作,在这些操作之后,比较指针是否安全该向量的地址以检查指针是否指向该向量,因为可能会重新分配内存。
例如
std::vector<int> vec;
vector<int>* pVec = &vec;
vec.reserve(10000);
assert(pVec == &vec);
vec = anotherVec;
assert(pVec == &vec);
更重要的是,将指针与向量的第一个值进行比较是否安全? 例如:
std::vector<int> vec(1,0);
int* p = &vec[0];
// some operation here
assert(p == &vec[0]);
根据我自己的测试,第一种情况似乎是安全的,而第二种情况则不是,但我不能确定。
【问题讨论】: