Страницы

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

понедельник, 16 декабря 2019 г.

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

#память #cpp


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

2 вариант:
GlCore *gl_core;
Gui *gui;

В первом случае я вижу плюсы в том, что не нужно думать о delete и в том, что память
выделиться на этапе запуска приложения. Но я использую wxwidgets и там элементы интерфейса
советуют создавать по второму варианту. Оно ясно, что это чем-то обусловлено, но я
к сожалению не могу понять и сделать для себя какой-то вывод. Мне интересны обоснованные
плюсы в пользу того или иного варианта выделения памяти.    


Ответы

Ответ 1



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

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

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