【Linux下和Windows下最大可以malloc内存】

目录

一、Windows下可以申请多少内存

二、Windows下可以申请多少内存


32位空间分布

 64位空间分布 

 

一、Windows下可以申请多少内存

32位下可以申请多少内存

#include <iostream>
#define MAX_SIZE 1024*1024*1024
#define MAX_MEMORY 4

int main()
{
    char* addr[MAX_MEMORY];

    for (int i = 0; i < MAX_MEMORY; ++i)
    {
        addr[i] = (char*)malloc(MAX_SIZE);
        if (addr[i] == nullptr)
        {
            perror("malloc failed!\n");
            return -1;
        }

        printf("第%d次申请内存,malloc 1GB success! 内存首地址:%x\n", i+1, addr[i]);
    }

    getchar();
    return 0;
}

 64位下可以申请多少内存

#include <iostream>
#define MAX_SIZE 1024*1024*1024
#define MAX_MEMORY 30

int main()
{
    char* addr[MAX_MEMORY];

    for (int i = 0; i < MAX_MEMORY; ++i)
    {
        addr[i] = (char*)malloc(MAX_SIZE);
        if (addr[i] == nullptr)
        {
            perror("malloc failed!\n");
            return -1;
        }

        printf("第%d次申请内存,malloc 1GB success! 内存首地址:%x\n", i+1, addr[i]);
    }

    getchar();
    return 0;
}

 总结:

  • malloc申请的是虚拟内存
  • 多次Windows32位下测试只能申请空间小于2GB
  • 多次Windows64下测试申请18GB-19GB

二、Windows下可以申请多少内存

物理内存2GB,交换区4GB 

 内核版本3.10,64位操作系统

 

 

 申请到127TB就申请不了了,因为程序运行还需要空间。

 参考小林coding

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
操作系统实际内存分配演示是一个比较复杂的过程,下面我会简单地介绍一下。 在Linux平台下,内存分配主要由以下几个部分组成: 1. 物理内存管理 2. 虚拟内存管理 3. 进程内存管理 在物理内存管理中,Linux将物理内存分为许多大小相等的页,通常为4KB。物理内存管理的任务是跟踪哪些页被使用,哪些页没有被使用。当需要申请新的内存时,Linux会先检查物理内存的可用情况,如果没有足够的空闲页,则会使用虚拟内存。 虚拟内存管理允许Linux将进程的逻辑地址空间映射到物理地址空间中。在Linux中,每个进程都有自己的虚拟地址空间,该空间是相互独立的。当进程需要访问内存时,它使用虚拟地址进行访问,而不必关心物理地址。 进程内存管理包括分配和释放进程的虚拟地址空间。当进程需要申请新的内存时,它调用malloc()函数来分配内存。当进程不再需要这些内存时,它调用free()函数来释放它们。 在Windows平台下,内存管理主要由以下几个部分组成: 1. 物理内存管理 2. 虚拟内存管理 3. 进程内存管理 Windows使用页面文件来扩展物理内存。页面文件是一个特殊的文件,用于保存进程不常用的内存页面。当物理内存不足时,Windows将这些页面从物理内存中换出,并将它们写入页面文件中。当需要使用这些页面时,Windows会从页面文件中读取它们,并将它们放回到物理内存中。 虚拟内存管理允许Windows将进程的逻辑地址空间映射到物理地址空间中。在Windows中,每个进程都有自己的虚拟地址空间,该空间是相互独立的。当进程需要访问内存时,它使用虚拟地址进行访问,而不必关心物理地址。 进程内存管理包括分配和释放进程的虚拟地址空间。当进程需要申请新的内存时,它调用HeapAlloc()函数来分配内存。当进程不再需要这些内存时,它调用HeapFree()函数来释放它们。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小唐学渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值