Размер C ++ динамической памяти во время выполнения

Это то, что мне было интересно некоторое время, и я так и не нашел ответ:

Почему, когда вы выделяете что-то в куче, вы не можете определить размер этого только по указателю, но вы можете удалить это, используя только указатель, и каким-то образом C ++ знает, сколько байтов нужно освободить?

Это как-то связано с тем, как оно хранится в куче? Есть ли эта информация, но не предоставляется C ++?

И, возможно, это должен быть отдельный вопрос, но я думаю, что это довольно тесно связано, поэтому я задам его здесь:

Почему это динамический массив элементов должен быть удален с помощьюdelete [] в отличие от простогоdelete команда; зачем C ++ эта дополнительная информация, чтобы правильно освободить всю память?

Ответы на вопрос(1)

Ваш ответ на вопрос