For example if I do something like this:
vector<int> myvector;
myvector.push_back(100);
int * ptr = &(myvector[0]);
myvector.clear();
myvector.push_back(10);
Will ptr still be valid? Or could it now be pointing to garbage?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
23.2.3 §4 says:
Since there is no such thing as “un-invalidation”, using
ptrafterclearresults in undefined behavior.On a side note, the parenthesis in
&(myvector[0])are not needed. Postfix operators always have higher precedence than prefix operators in C++, so writing&myvector[0]is just fine.