Я много слышал о на C++delete
оператор, а также использовали его много до сих пор, но я не знаю, что его реальная работа точно.
То, что я видел в Интернете, было разговором о «освобождении пространства для хранения», но для меня это не имеет смысла для полного понимания проблемы.точная операция удаления оператора
Пожалуйста, ознакомьтесь с фрагментом кода ниже.
int main()
{
int* p = new int(6);
cout << *p << endl;
delete p;
}
Указатель p
имеет свой собственный адрес, так как это переменная (# 1). Указатель p
тоже имеет адрес внутри себя, потому что это указатель (# 2). Объект (без имени) содержит значение 6 внутри своего блока памяти, а адрес этого блока памяти совпадает с адресом #2
. (Поскольку указатель указывает на этот объект, используя этот адрес.)
Теперь, что произойдет с адресами # 1 и # 2 после выполнения delete;
?
Что говорит об этом язык C++?
И каков может быть эффект от разных компиляторов на корпусе?
Это выражение 'delete' ** **, а не вызов оператора' delete' ** **. Последнее является функцией освобождения, которая обычно вызывается выражением 'delete'. После того, как выражение 'delete' вызывает объект-деструктор (или для массива, последовательность таких). –