При назначении значений большому массиву используемая память увеличивается, даже если новая память не выделяется. Я проверяю используемую память просто диспетчером задач (Windows) или системным монитором (Ubuntu).Растущая память при назначении большого массива
Проблема такая же на обеих ОС. Я использую gcc 4.7 или 4.6 соответственно.
Это мой код:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int i,j;
int n=40000000; //array size
int s=100;
double *array;
array=malloc(n*sizeof(double)); //allocate array
if(array==NULL){
return -1;
}
for(i=0;i<n;i++){ //loop for array, memory increases during this loop
for(j=0;j<s;j++){ //loop to slow down the program
array[i] = 3.0;
}
}
return 0;
}
Я не вижу никакой логической проблемы, но к моему знанию я не превышают каких-либо ограничений системы либо. So мои вопросы таковы:
Проблема может быть воспроизведена другими?
В чем причина растущей памяти?
Как решить эту проблему?
Я вижу, что нет массива! – haccks
Да, это называется 'array'. – abligh
@abligh; Вы имеете в виду имя переменной 'array'? Я говорю о структуре данных. – haccks