Я сомневаюсь, что внутри C ++ есть распределитель арифметических указателей c, который позволяет удалять исходные или пониженные указатели вместо исходных.
Выделенные / освобождаемая память остается прежней, разница в том, какой деструктор называется до освобождения.
На уровне отладки у вас тот же указатель. Простой профилировщик памяти может быть реализован путем перегрузки оператора new / delete. У вас может быть карта, в которой хранятся указатели, и также проверяется, передается ли для удаления что-то, что ранее не сохранялось с вашим новым оператором.
Кроме того, существуют уровни памяти вне уровня C ++, которые вы, возможно, захотите профилировать. В Windows, VirtualAllo c, память COM, дескрипторы и т. Д. c.