我使用以下代码找出答案,但我总是得到 1 作为答案。有什么不对。谢谢
#include <stdio.h>
#include <stdlib.h>
int main(){
int mult = 0;
int chk =8;
do{
mult+=1;
int *p = (int*)malloc(1024*1024*1024*mult);
if(p==0){
chk =0;
}else{
free(p);
}
}while(chk !=0);
mult = mult -1;
printf("The number of gigs allocated is : %d\n",mult);
return 0;
}
为了提供帮助,我有一个同时安装了 windows 和 linux 的 64 位系统。因此,即使我在 64 位系统上得到的答案只有 1 GB,上述逻辑是否正确?
最佳答案
如果它是 32 位操作系统,那么最大的连续 block 为 1GB(或介于 2GB 和 2GB 之间)也就不足为奇了。在 64 位操作系统上,更大的 block 是可能的。
如果您更改代码以分配更小的单个片段,您将可能能够分配超过 1GB 的总空间。
关于c - malloc 可以为您的程序分配多少 GB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4876780/