Есть ли разница в использовании памяти между следующими двумя кодами в C ++?
int *val = new int(5);
а также
int val = 5;
Да, ваш первый пример требует как минимум sizeof(int*)
(в автоматическом хранилище) + sizeof(int)
(в динамическом хранилище). Там также могут быть служебные расходы от управления памятью.
Ваш второй пример требует только sizeof(int)
который может в конечном итоге быть опущен полностью (путем оптимизации) в зависимости от того, как он используется.
«Есть ли разница в использовании памяти между следующими двумя кодами в C ++?»
Конечно, ваш первый пример утечки памяти, если вы не звоните delete val;
после того, как вам это больше не нужно.
Вы можете прочитать о RAII идиома, относительно вашего 2-го образца (хотя просто иметь дело с простым int
ценит все, что оказывается тривиальным).
Примечание с ++ new
не обрабатывается так же, как в Джава или же C # язык, нет сборщика мусора.