Hello, let me please ask a simple question: int main() { std::vectorvec_; vec_.push_back("Hello"); std::cout << (void*)&(vec_[0][0]) << std::endl; //00000144AD245E08 vec_.resize(1000); std::cout << (void*)&(vec_[0][0]) << std::endl; //00000144AD24E6C8 } Why are the addresses different? Shouldn't the memory in the vector - internal std::string pointers be copied when re-allocating?