c - malloc 可以为您的程序分配多少 GB

标签 c operating-system malloc

我使用以下代码找出答案,但我总是得到 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/

相关文章:

c - "Replay"tcpdump 文件

Windows ubuntu 子系统上的 Python 语法错误

c - 简短快速的 malloc 内存访问问题

c - 二元矩阵两点之间的最短路径

C++ 随机字符串返回意外结果

java - 如何在java程序中获取操作系统属性?

c - FreeRTOS 任务不是上下文切换

c - Malloc 、 Realloc 、 Memset : Struct pointers , char、int 数组

c - malloc() 调用函数 - 段错误 : 11

c - 服务器认为2个不同IP的客户端是同一个客户端(C Socket编程)