Каким образом оператор delete[] определяет объем освобождаемой памяти?

Оператор delete[] в C++ освобождает память, выделенную под массив объектов, созданных с помощью new[].

Короткий ответ

Что ответить на собеседовании

Оператор delete[] в C++ освобождает память, выделенную под массив объектов, созданных с помощью new[]. Чтобы определить, сколько объектов нужно уничтожить и сколько памяти освободить, компилятор обычно сохраняет дополнительную информацию о размере массива.

Подробный разбор

Ответ с пояснениями

Оператор delete[] в C++ освобождает память, выделенную под массив объектов, созданных с помощью new[]. Чтобы определить, сколько объектов нужно уничтожить и сколько памяти освободить, компилятор обычно сохраняет дополнительную информацию о размере массива.

Как это работает на практике:

  • При выделении массива new[] выделяется немного больше памяти, чем нужно для самих объектов, и туда записывается количество элементов.
  • При вызове delete[] эта информация считывается, и вызывается деструктор для каждого объекта массива.
  • После этого освобождается вся выделенная память.

Эта реализация зависит от компилятора и платформы, но суть в том, что delete[] знает размер массива благодаря служебным данным, сохранённым при выделении.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку