c++ деструкторы

C++

class CL
{
private:
int arr[1000];
public:
...
...
...
...
~CL()
{
delete [] arr;
}
};

Зачем в деструкторе освобождать память массива "вручную"??Разве она не освобождается автоматически при уничтожении объекта?Почему??
Спасибо!!

Примечание:
А если объект объявлен динамически: Obj *o = new Obj()?!
Ответы:
Статические массивы нельзя уничтожать!
Вы правы: память массива, объявленного статически, освобождается автоматически.
Вышеприведённый деструктор может привести к ошибке доступа к памяти.
Объекты, определённые подобно объекту arr ("int arr[1000];"), представляют собой не некие абстрактные массивы, к которым нас всех приучают (по крайней мере мне такое вбивали в голову :) ), а конкретно специальный объект-массив (именно объект-массив), перекочевавший из Си в С++. Такой объект ещё называют Си-массивом или массивом в стиле Си, или даже автоматическим массивом (мне по душе больше первый вариант). Выделяется подобный объект, как было уже выше отмечено, статически, т.е. компилятор ответственен за выделение и освобождение памяти под такие объекты, которые ещё называют объектами, с автоматической продолжительностью хранения (automatic storage duration; как бы в стандарте они именно так и называются).


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.