Junior — Middle
Comment l'opérateur delete[] détermine-t-il la quantité de mémoire libérée?
sobes.tech IA
Réponse de l'IA
Оператор delete[] в C++ освобождает память, выделенную под массив объектов, созданных с помощью new[]. Чтобы определить, сколько объектов нужно уничтожить и сколько памяти освободить, компилятор обычно сохраняет дополнительную информацию о размере массива.
Как это работает на практике:
- При выделении массива
new[]выделяется немного больше памяти, чем нужно для самих объектов, и туда записывается количество элементов. - При вызове
delete[]эта информация считывается, и вызывается деструктор для каждого объекта массива. - После этого освобождается вся выделенная память.
Эта реализация зависит от компилятора и платформы, но суть в том, что delete[] знает размер массива благодаря служебным данным, сохранённым при выделении.