【数媒在线课堂】内存分配函数 malloc 的原理

2025-03-22ASPCMS社区 - fjmyhfvclm

Windows 默认进程地址空间为 2GB,也就是一个进程最多分配的内存接近 2GB,但不可能达到。 不过应该有方法可以突破这个限制,在 VC++2010 里工程属性设置里有一个项貌似是来设置这个的,

但是我设置了启用后用 malloc 申请大于等于 2GB 的内存时还是不成功,这个不知道怎么回事。

接着说 malloc 的事,看其他文章时,提到分配内存后该地址的前面应该是一个结构体,这个结构体来保存分配的这段内存的相关信息,当然,内存大小是必须保存下来的,至于是不是结构体中的成员来保存这个也不清楚

2GB == 1024 * 1024 * 1024 * 2 == 0x80000000,可见 2GB 对应为 32 个二进制位,也就是 4 字节,

3GB == 0XC0000000, 3GB 也是 32 位 ==4 字节,而 4GB 为 0x100000000,有 36 个二进制位,也就是需要 5 字节,那么也就是用来保存这个分配大小的内存尺寸对可以分配的内存大小至关重要! 这一点要知道

在我的实验中,发现分配大于等于 2GB 一直都没成功,所以就暂且认为在我的环境设置下不可能申请 2GB 动态内存,那么只关注用来保存分配大小的 4 字节即可,这是前提!

全部评论