Я только что написал рекурсивную функцию, и до меня дошло, что все переменные, которые я использую в этой функции, останутся в памяти до тех пор, пока не прервется рекурсия. Если я повторяю большое количество раз или выделяю большие объемы памяти для переменных, не используемых в последующем вызове рекурсивной функции, может ли это привести к значительному расточительному использованию памяти?
Например, в следующем, только vec2
используется в следующем рекурсе, а temp_int
и temp_vec
будут продолжать занимать память без необходимости.
int recurse(std::vector<int> arg_vec) {
int temp_int i;
std::vector<int> temp_vec;
std::vector<int> vec2;
//... do some processing with arg_vec and temp_vec and result is stored in vec2
recurse(vec2)
return if (some condition met);
}
Должен ли я тогда выделять всю память, используя новые команды, и удалять их перед вызовом функции? Или есть какой-то другой метод для работы с этим