Вы можете освободить память массива temp_vec перед входом в рекурсию.
Не через
temp_vec.clear();
, поскольку стандарт не гарантирует, что clear () освобождает выделенную память массива
std::swap(temp_vec. std::vector<int>());
В любом случае, использование другой области видимости для temp_vec более полезно в этом примере, поскольку после выхода из области видимости пространство векторного объекта освобождается в стеке. Смотрите другой ответ.
Кстати, рассмотрите вместо использования вызова по значению
int recurse(std::vector<int> arg_vec) {
вызов по ссылке, чтобы избежать ненужного векторного копирования:
int recurse(const std::vector<int> &arg_vec) {