Распределение памяти в C++ без ключевого слова 'new'
У меня есть код, сгенерированный MATLAB Coder. Он включает в себя некоторые определения переменных этого типа:
int tmp_size[400];
Эти переменные не удаляются явно до конца области действия метода.
Переменные расположены в куче или стеке? Это эквивалентно следующему?
int* tmp_size = new int[400];
Было бы лучше для целей управления памятью переписать эти определения переменных с new
, лайк int* tmp_size = new int[400];
?
Я замечаю, что моя программа выделяет память, которая никогда не освобождается. Может ли это быть причиной утечек памяти?
1 ответ
Решение
Эти переменные имеют область действия "автоматически". Язык гарантирует, что ваша программа освободит это хранилище в конце текущего блока. Вероятно, он находится в стеке, но ничто не заставляет реализацию использовать стек. Итог: нет утечки.