Управление памятью с рекурсией и для петель (C ++ 20)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Управление памятью с рекурсией и для петель (C ++ 20)

Сообщение Anonymous »

У меня есть рекурсивная функция, определенная вроде этого: < /p>
void routine(int* old_arr, int k, int depth) {
if (depth == 15) return;
int* new_arr = new int[size];
// some operation that builds new_arr values out of old_arr values
delete [] old_arr; // if i dont need old_arr anymore, can I just do this?
for (int i = 0; i < 3; i++) {
routine(new_arr, k);
}
return;
}
< /code>
Если вы заметите, на 2 -м вызове цикла для цикла будет двойной бесплатный. < /p>
См. вдоль тройного дерева. Аргумент функции Old_ARR используется для заполнения значений нового массива, называемого new_arr. Обратите внимание на Old_ARR только для вычисления значений на следующей глубине. Если у меня нет никакой свободной рутины, у меня будет много этих указателей, плавающих вокруг потребления памяти и ничего не делать. Что такое хороший дизайн в этом? >
shared_ptr new_arr(new int[size]);
// operators to initialize new_arr with old_arr
if (old_arr.use_count() == 1) old_arr.reset()
< /code>
Это правильная идея? РЕДАКТИРОВАТЬ: На самом деле это тоже не сработает.


Подробнее здесь: https://stackoverflow.com/questions/794 ... -loops-c20
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»