Что идиома программирования RAII думает о динамическом выделении памяти? С++
Читал про ООП и наткнулся на идиому RAII, в основе которой лежит обязательная инициализация и освобождение памяти. Также там сказано, что идиома RAII запрещает динамически выделять память для объектов наших классов. Но что делать с тяжелыми классами, которые забивают стек и требуют выделения в куче? Что программисты делают в таком случае? Просто закрывают глаза и выделяют память динамически или все же следуют RAII и используют стек?
Ответы (1 шт):
в основе которой лежит обязательная инициализация и освобождение памяти - ну, это слишком сильно сказано... Например, это может быть открытие и закрытие файла. Это все же RAII, а не MAII - Resource, не Memory :)
Ну, а насчет больших классов... Обычно класс с идиомой RAII не такой уж большой - ведь он все может хранить в выделяемой памяти.
Но если даже так - то для этого предусмотрены интеллектуальные указатели, которые просто позволяют применить RAII рекурсивно :)