Здравствуйте, Ester, Вы писали:
см.
https://isocpp.org/files/papers/N4860.pdf
...
3. In a single-object delete expression, if the static type of the object to be deleted is different from its dynamic
type and the selected deallocation function (see below) is not a destroying operator delete, the static type
shall be a base class of the dynamic type of the object to be deleted and the static type shall have a virtual
destructor or the behavior is undefined. In an array delete expression, if the dynamic type of the object to be
deleted differs from its static type, the behavior is undefined.
Какое управление памятью уже не важно.