Правила программирования на С и С++. Главы 7-8
Страница 65. Вся память, выделенная в конструкторе, должна быть освобождена в деструкторе


153. Вся память, выделенная в конструкторе, должна быть освобождена в деструкторе.

Не выполнение этого обычно приводит к ошибке, но я видел программу, где это делалось намеренно. Упомянутая программа на самом деле нарушала другое правило: Не позволяй открытого доступа к закрытому классу. Функция-член не только возвращала внутренний указатель на память, выделенную new, но класс ожидал, что вызывающая функция передает этот указатель delete. Это плохая идея со всех сторон: получить при этом утечку памяти - значит легко отделаться.

С точки зрения поиска ошибок помогает близкое физическое расположение конструктора и деструктора рядом друг с другом в файле .cpp, чтобы сделать их заметнее при отладке.

 
« Предыдущая статья   Следующая статья »