Каждый раз, когда кто-то задает здесь вопрос о delete[]
, всегда есть довольно общие сведения о том, как это делает C ++, используйте тип ответа delete[]
. Исходя из ванильного фона C, я не понимаю, почему вообще нужен другой вызов.
С _3 _ / _ 4_ вы можете получить указатель на непрерывный блок памяти и освободить блок непрерывной памяти. Что-то в области реализации приходит и знает, какой размер выделенного вами блока был основан на базовом адресе, когда вам нужно его освободить.
Нет функции free_array()
. Я видел несколько сумасшедших теорий по другим вопросам, косвенно связанным с этим, например, вызов delete ptr
освободит только верхнюю часть массива, а не весь массив. Вернее, не определяется реализацией. И конечно ... если бы это была первая версия C ++, и вы сделали странный выбор дизайна, который имеет смысл. Но почему со стандартом C ++ $PRESENT_YEAR
он не был перегружен ???
Кажется, что единственный дополнительный бит, который добавляет C ++, - это прохождение массива и вызов деструкторов, и я думаю, что, возможно, в этом его суть, и он буквально использует отдельную функцию, чтобы сэкономить нам один поиск длины времени выполнения, или nullptr
в конце списка в обмен на мучения каждого нового программиста на C ++ или программиста, у которого был нечеткий день и который забыл, что есть другое зарезервированное слово.
Может ли кто-нибудь прояснить раз и навсегда, есть ли причина помимо того, что говорится в стандарте, и никто не ставит под сомнение?