Допустим, я создаю std::vector<int*> myVec;
, резервирую 100 записей и заполняю вектор значениями, чтобы все 100 элементов имели действительные указатели. Затем я кеширую указатель на один из элементов,
int * x = myVec[60];
Затем, если я добавляю еще один int *
, который вызывает изменение размера вместе с перемещением из-за фрагментации кучи, предыдущий указатель на указатель становитсяпризнан недействительным или указывает на новое место в памяти?
Если мои серверы памяти меня исправили, если в примере было std::vector<int> myVecTwo
с теми же условиями, что и выше, и я сохранил ptr вроде
int * x = &myVecTwo[60];
и приступил к добавлению и изменению размера, тоуказатель будет недействительным.
Итак, мой вопрос заключается в следующем. Указатель на указатель станет недействительным? Я больше не уверен из-за новой функциональности C ++ std is_trivially_copyable и того, использует ли std :: vector такую функциональность или проверки POD.
Будет ли указатель недействительным в C ++ 11?