Распределение памяти в C++ без ключевого слова 'new'

У меня есть код, сгенерированный MATLAB Coder. Он включает в себя некоторые определения переменных этого типа:

int tmp_size[400];

Эти переменные не удаляются явно до конца области действия метода.

Переменные расположены в куче или стеке? Это эквивалентно следующему?

int* tmp_size = new int[400];

Было бы лучше для целей управления памятью переписать эти определения переменных с new, лайк int* tmp_size = new int[400];?

Я замечаю, что моя программа выделяет память, которая никогда не освобождается. Может ли это быть причиной утечек памяти?

1 ответ

Решение

Эти переменные имеют область действия "автоматически". Язык гарантирует, что ваша программа освободит это хранилище в конце текущего блока. Вероятно, он находится в стеке, но ничто не заставляет реализацию использовать стек. Итог: нет утечки.

Другие вопросы по тегам