Рассмотрим код (он не имеет смысла):
double* create() {
double *array = new double[100]; // 1)
for(unsigned int i=0; i<100; ++i) array[i] = i;
return array;
}
double reduce(double* array) {
double sum = 0.0;
for(unsigned int i=0; i<100; ++i) sum += array[i];
return sum;
}
int main()
{
double sum = 0.0;
for(unsigned int i=0; i<100; ++i) {
sum += reduce(create());
}
// 2)
// ...
}
Массивы, созданные в 1) во время for-l oop, все еще в куче в точке 2), т. Е. Некоторая память все еще (излишне) занят в пункте 2)?
(я знаю, что пример может быть более минималистичным c, но он действительно короткий.)