这是我之前关于为什么size_t是必要的问题的后续跟进。
鉴于size_t保证足够大以表示你可以分配的内存块的最大大小(意味着仍然可能有一些大于size_t的整数),我的问题是……
是什么决定了你可以一次分配多少钱?
机器的体系结构,操作系统(但两者交织在一起)和您的编译器/库集确定了您可以一次分配多少内存。
malloc
不需要能够使用操作系统可以给他的所有内存。 操作系统不需要提供机器中存在的所有内存(例如, 出于许可原因 ,各种版本的Windows Server具有不同的最大内存)
但请注意,操作系统可以提供比机器中存在的内存更多的内存,甚至比主板允许的内存更多(假设主板有一个内存插槽只接受1GB内存条,Windows仍然可以让一个程序分配2GB的内存)。 这是通过使用虚拟内存,分页(你知道,交换文件,你的老朋友和慢朋友:-)或者,例如,通过使用NUMA来完成的 。
在实际代码中我可以想到三个约束:
以上就是c/c++开发分享是什么决定了可以分配多少内存?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/522247.html