(*) Насколько я знаю, стандарт позволяет реализации модифицировать операнд оператора delete
, однако большинство реализаций этого не делают.
int* ptr = new int(0);
delete ptr; //delete is allowed to modify ptr, for example set it to 0
std::cout << ptr; // UB?
Подтверждение (*), является ли определение ptr
(в форме его печати) четким?
Если delete
изменяет ptr
, разрешено ли задавать значение ловушки, которое сделает чтение ptr
UB?