Как предотвратить ненужное использование памяти в рекурсивных функциях

Я только что написал рекурсивную функцию, и до меня дошло, что все переменные, которые я использую в этой функции, останутся в памяти до тех пор, пока не прервется рекурсия. Если я повторяю большое количество раз или выделяю большие объемы памяти для переменных, не используемых в последующем вызове рекурсивной функции, может ли это привести к значительному расточительному использованию памяти?

Например, в следующем, только 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);
}

Должен ли я тогда выделять всю память, используя новые команды, и удалять их перед вызовом функции? Или есть какой-то другой метод для работы с этим

5
задан zenna 28 August 2010 в 20:38
поделиться