Некоторые ошибки, которые могут возникнуть при неправильном использовании деструкторов в C++:
- Утечка памяти. pro-prof.com Возникает, когда деструктор завершает работу исключением. pro-prof.com В памяти могут остаться как части текущего класса, так и базовых классов. pro-prof.com
- Досрочное завершение программы. pro-prof.com Такая ошибка происходит, если деструктор объекта, уничтожаемого во время развёртывания стека, генерирует исключение. pro-prof.com
- Невозможность вызова деструктора. www.linux.org.ru Это может случиться, например, если деструктор приватный и его нельзя вызвать. www.linux.org.ru
- Ошибка компиляции. www.linux.org.ru www.cyberforum.ru Она может возникнуть, если деструктор вызывают через объект напрямую. www.cyberforum.ru Лучше использовать динамическую инициализацию объекта. www.cyberforum.ru
- Ошибка, когда деструктор не вызывается. stackoverflow.com Например, если деструкторы объектов, размещённых в стеке, не выполняются сразу же после выхода из блока, содержащего объекты. stackoverflow.com
Чтобы избежать ошибок, деструктор не должен вырабатывать исключения, а также необходимо обрабатывать все возможные исключения функций, которые вызывает. pro-prof.com