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 的时间和值会有什么不同?
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 的时间和值会有什么不同?
我们不知道,因为它是一个实现细节。C 标准对此只字未提。
我们无法回答这个问题,因为它不仅仅取决于系统有多少 RAM,还取决于“系统上还运行了什么”和“系统的配置是什么”。例如,如果我们rlimit
在 Linux/Unix 系统中设置了不允许进程使用超过 256MB,那么无论系统有多少 GB 或 TB 的 RAM,都将不允许分配超过 256MB。
另外,考虑一个有 6GB 交换空间的 1GB 系统可能i
比一个有 4GB 内存但没有交换空间的系统给你更高的价值?
除了“系统中有多少 RAM”之外,还有其他变量决定了您的应用程序可以分配多少 RAM。