-3
while(1){    
static int i=1;   
int *p;    
if(p=malloc(1024*1024))  //assigning 1 mb space    
printf("%d.",i++);    
else    
exit(0);    
}

如果上面的程序在一个有 1GB 内存的系统和另一个有 4GB 内存的系统中运行,那么 i 的时间和值会有什么不同?

4

2 回答 2

0

我们不知道,因为它是一个实现细节。C 标准对此只字未提。

于 2013-02-12T18:11:42.760 回答
0

我们无法回答这个问题,因为它不仅仅取决于系统有多少 RAM,还取决于“系统上还运行了什么”和“系统的配置是什么”。例如,如果我们rlimit在 Linux/Unix 系统中设置了不允许进程使用超过 256MB,那么无论系统有多少 GB 或 TB 的 RAM,都将不允许分配超过 256MB。

另外,考虑一个有 6GB 交换空间的 1GB 系统可能i比一个有 4GB 内存但没有交换空间的系统给你更高的价值?

除了“系统中有多少 RAM”之外,还有其他变量决定了您的应用程序可以分配多少 RAM。

于 2013-02-12T18:28:14.593 回答