Вдохновленный этот вопрос.
Предположим, что в коде С++ у меня есть правильный указатель и правильно delete
он. Согласно стандарту С++, указатель станет недействительным (3.7.3.2/4 - функция освобождения сделает недопустимыми все указатели, ссылающиеся на все части освобожденного хранилища).
По крайней мере, в большинстве реализаций он сохраняет значение и будет хранить точно тот же адрес, что и раньше delete
, однако используя значение undefined поведение.
Является ли стандарт гарантией того, что указатель сохранит его значение или это значение может быть изменено?