【发布时间】:2014-03-12 23:25:54
【问题描述】:
将值分配给大型数组时,即使没有分配新内存,使用的内存也会不断增加。我只是通过任务管理器(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;
}
我没有看到任何逻辑问题,但据我所知,我也没有超出任何系统限制。所以我的问题是:
问题可以被其他人重现吗?
内存增长的原因是什么?
我该如何解决这个问题?
【问题讨论】:
-
我可以看到没有数组!
-
是的,它叫
array。 -
@abligh;你的意思是变量名
array?我说的是数据结构。 -
@hacks(这次正确),常见问题解答没有回答他的问题。而且,“动态分配 [an] 数组”结构很常见,例如:stackoverflow.com/questions/455960/… 和(更一般地)bit.ly/1fkDTc9