Операторы new/delete вовсе не обязательно сводятся к вызову функций malloc/free даже для простых типов. Например, для маленьких и больших объектов могут использоваться разные пулы памяти. P.S. Подробнее про эту тематику у нас есть статья "Почему в С++ массивы нужно удалять через delete[]" - https://pvs-studio.ru/ru/blog/posts/cpp/0973/
N1 в целом не о чем, т.к. это имеет значение для объектов с деструкторами, но формально ub, да
Операторы new/delete вовсе не обязательно сводятся к вызову функций malloc/free даже для простых типов. Например, для маленьких и больших объектов могут использоваться разные пулы памяти.
P.S. Подробнее про эту тематику у нас есть статья "Почему в С++ массивы нужно удалять через delete[]" - https://pvs-studio.ru/ru/blog/posts/cpp/0973/