这是关于为什么size_t是必要的my previous question的后续行动。
鉴于size_t保证足够大以表示你可以分配的内存块的最大大小(意味着仍然有一些大于size_t的整数),我的问题是......
什么决定了你可以一次分配多少钱?
答案 0 :(得分:3)
您的机器的体系结构,操作系统(但两者交织在一起)和您的编译器/库集确定了您可以一次分配多少内存。
malloc
没有需要能够使用操作系统可以给他的所有内存。操作系统不需要以提供计算机中存在的所有内存(例如,各种版本的Windows Server具有不同的最大内存 for licensing reasons )< / p>
但请注意,操作系统可以提供比机器中存在的内存更多的内存,甚至比主板允许的内存更多(假设主板有一个内存插槽,只接受1GB的记忆棒,Windows仍然可以让程序分配2GB的内存)。这是通过使用虚拟内存,分页(你知道,交换文件,你的老朋友和慢朋友:-)或者,例如,通过使用NUMA完成的。
答案 1 :(得分:0)
我可以在实际代码中考虑三个约束: