abc *A = new abc ;
cout<< static_cast<void*>(A) << endl ;
Это первый выход.
delete A ;
cout<< static_cast<void*>(A) << endl ;
Хотя после delete
значение A
остается неизменным. Что было сделано delete
: 1. вызовите деструктор (в этом случае тривиальный) из A
и 2. Сообщите распределителю памяти, что память, выделенная для A
, теперь свободна и может использоваться для других целей.
abc *B = new abc ;
cout<< static_cast<void*>(B) << endl ;
Возможно, на этом этапе вывод будет тем же самым - поскольку у распределителя есть память, ранее выделенная для A
для использования в настоящее время, она может использовать его для B
.
delete B ;
cout<< static_cast<void*>(B) << endl ;
То же, что и раньше, с A
.