主题:C++里数组最大可以占多少内存空间?
tuanlianshi
[专家分:0] 发布于 2011-04-22 23:32:00
如题. 可以分配给一个数组的内存空间到底最大能有多大? 分配给一个程序中的所有数组的
总空间有多大? 这个值和那些因素有关? 编译器? 操作系统? 还是物理内存?
初学者不太明白, 请大虾指点, 非常感谢!
回复列表 (共5个回复)
沙发
wukaikailive [专家分:80] 发布于 2011-04-23 21:09:00
应该可以无限大吧,不过要看你内存有多大了
板凳
ucchen [专家分:80] 发布于 2011-04-23 21:50:00
理论上是无限大的~~但是受限于内存的大少~
3 楼
eastcowboy [专家分:25370] 发布于 2011-04-23 23:12:00
受限的因素比较多,但是,不受物理内存限制。(你编译出的程序,即使你的机器物理内存有限,但你可以找到一个物理内存更大的机器,从而成功运行。另外,考虑虚拟内存。)
1、来自编译器的限制:大小不能超过size_t所能表示的最大值。
2、来自操作系统的限制:32位windows系统中,一个程序所能使用的内存最多不超过2G(也有说是3G的,我也不是很清楚)。其它操作系统类似。
另外,堆栈上的数组一般都不能太大。一般所有的局部变量(static的不算在内)加起来不能超过1M。可以突破这个限制,但一般不必突破。
用全局数组(不论是否用static修饰)、static数组、动态分配的数组,都可以无视这个限制,基本只受限于前面两条。
4 楼
cchmhao2010 [专家分:10] 发布于 2011-04-27 17:45:00
[url=http://www.worldgodshop.com/]Supra Shoes[/url] [url=http://www.worldgodshop.com/]Radii shoes[/url] [url=http://www.worldgodshop.com/]Prada Shoes[/url] [url=http://www.worldgodshop.com/]Jordan shoes[/url] [url=http://www.worldgodshop.com/]Christian Louboutin shoes[/url]
http://www.worldgodshop.com/
5 楼
xiongfenglove [专家分:30] 发布于 2011-05-12 15:17:00
2、来自操作系统的限制:32位windows系统中,一个程序所能使用的内存最多不超过2G(也有说是3G的,我也不是很清楚)。其它操作系统类似。
赞同楼上的这句话。
我以前看<深入解析windows操作系统4>中貌似说了2g给应用程序,2g留给内核。
我来回复