Некоторые из функций моего кода на C++ имеют временные локальные объекты, которые используют много памяти кучи. Поэтому я бы хотел, чтобы они были разрушены и освободили память, как только я покончу с ними. Но C++ только вызывает деструктор, когда имя переменной выходит за рамки. Есть ли способ позволить компилятору автоматически вызывать деструктор или другой метод очистки в конце диапазона активности?Есть ли способ получить C++ деструкторы, вызываемые с нетерпением?
Конечно, я мог бы просто добавить/удалить объекты вручную, но это неудобно и подвержено ошибкам. В равной степени неудовлетворительно использование дополнительных фигурных скобок, чтобы ограничить область действия явно.
EDIT: Судя по ответам, похоже, что этого не может быть сделано с текущими функциями C++. Я предложу его для следующего стандарта.
Что вы имеете в виду с «диапазоном жизнедеятельности»? Вы, возможно, ищете умные указатели? – user463035818
Очень похоже, что ваши функции слишком длинны. – dhke
Как насчет использования метода 'clear', который можно вызвать вручную, но также будет вызываться деструктором? –