Правила программирования на С и С++. Главы 7-8 Страница 65. Вся память, выделенная в конструкторе, должна быть освобождена в деструкторе
|
Страница 65 из 74 153. Вся память, выделенная в конструкторе, должна быть освобождена в деструкторе.
Не выполнение этого обычно приводит к ошибке, но я видел программу, где это делалось намеренно. Упомянутая программа на самом деле нарушала другое правило: Не позволяй открытого доступа к закрытому классу. Функция-член не только возвращала внутренний указатель на память, выделенную new, но класс ожидал, что вызывающая функция передает этот указатель delete. Это плохая идея со всех сторон: получить при этом утечку памяти - значит легко отделаться. С точки зрения поиска ошибок помогает близкое физическое расположение конструктора и деструктора рядом друг с другом в файле .cpp, чтобы сделать их заметнее при отладке. |