Страницы

Поиск по вопросам

четверг, 29 ноября 2018 г.

Выделение памяти С++

Вопрос достаточно простой, но для меня он неясен. Всем известно, что в С++ у нас есть несколько способов выделения памяти. В моем случае у нас есть главный объект приложения. В нем создаются главные части: объект ядра и объект интерфейса. Мой вопрос состоит в следующем. Каким образом лучше выделять память под эти объекты. 1 вариант: GlCore gl_core; Gui gui; 2 вариант: GlCore *gl_core; Gui *gui; В первом случае я вижу плюсы в том, что не нужно думать о delete и в том, что память выделиться на этапе запуска приложения. Но я использую wxwidgets и там элементы интерфейса советуют создавать по второму варианту. Оно ясно, что это чем-то обусловлено, но я к сожалению не могу понять и сделать для себя какой-то вывод. Мне интересны обоснованные плюсы в пользу того или иного варианта выделения памяти.


Ответ

Вы не должны думать о мелких несущественных технических деталях, наподобие «нужно вызывать delete или сэкономим одну строчку». Не экономьте на спичках. Думайте о смысле. Нужны ли вам объекты gl_core и gui всегда, или вы хотите создать их в какой-то определённый, контролируемый вами момент? Требуют ли они, чтобы что-то было инициализировано до их создания? Если да, глобальный объект — не лучшее место. Требуют ли объекты gl_core и gui подчистить за собой, когда они больше не нужны (например, когда приложение завершает работу графической части)? Если да, вам неплохо бы вызвать деструктор (посредством delete) вручную, а не дожидаться автоматической деаллокации в конце жизни приложения.

Комментариев нет:

Отправить комментарий