Что происходит с адресом после того, как оператор удаления был применен к нему в С++?
Если я delete указатель следующим образом:
delete myPointer;
И после этого не присвойте 0 указателю следующим образом:
myPointer = 0; //skipped this
Будет ли myPointer указывать на другой адрес памяти?
Ответ 1
Нет, в большинстве реализаций он сохранит тот же адрес, что и ранее - delete обычно не изменяет адрес, и если вы не назначаете новое значение адреса, оно остается неизменным. Однако это не всегда гарантировано.
myPointer будет указывать на тот же адрес памяти. Но для вас было бы нецелесообразно использовать память на этом адресе, потому что delete вернул бы ее в среду выполнения/операционную систему, а операционная система моя выделила эту память для использования чего-то еще.
Ответ 3
Определенно, нет. Операция delete не меняет самого указателя - она освобождает память, адресованную этим указателем.