Комментарии 2
На практике почти всегда размер выделенной памяти в куче сохранен где-то перед возвращаемым адресом, вне зависимости от функции: malloc, new или new[].
Ибо у блока выделенной памяти должен быть заголовок с размером и указателем на следующий блок.
Исключение может быть в случае специальных технологий оптимизации скорости выделения памяти, вроде заранее выделенных разделов памяти под фиксированные размеры объектов, но и в этом случае принадлежность к конкретному разделу определяет размер объекта.
Ибо у блока выделенной памяти должен быть заголовок с размером и указателем на следующий блок.
Глупости. Никто никому ничего не должен. Посмотрите как работает jemalloc, также очень похожим образом работает slub в линукс-ядре.
в этом случае принадлежность к конкретному разделу определяет размер объекта.
Слишком приблизительным образом.
Почему в С++ массивы нужно удалять через delete[]