Есть много мест, где я получил такой код:
some_function_signature()
{
T a;
T b = f1(a);
T c = f2(b);
T d = f3(c);
...
}
Как вы можете видеть, в такой функции a
передается в f1()
для получения b
, затемb
передано f2()
для получения c
и так далее.Эти переменные не будут использоваться после вызова функции (f1,f2,f3
...).И они содержат большую память (например, T
- это большие данные изображения). Проблема здесь в том, что в этой функции накопленное потребление памяти может быть большим, и я бы хотел уменьшить это.Ожидание деструктора T для освобождения памяти сделает пиковое использование памяти some_function_signature()
очень большим.
Я могу сделать что-то подобное, чтобы освободить память после использования:
some_function_signature()
{
T a;
T b = f1(a); a.free();
T c = f2(b); b.free();
T d = f3(c); c.free();
...
}
Интересно, смогу ли я сделать этот процесс автоматическим и более элегантным. Например, процесс управления памятью с определенными областями или использование подсчета ссылок, но я просто не знаю, как лучше применить эти методы здесь.