回 帖 发 新 帖 刷新版面

主题:C++里数组最大可以占多少内存空间?

如题. 可以分配给一个数组的内存空间到底最大能有多大? 分配给一个程序中的所有数组的
总空间有多大? 这个值和那些因素有关? 编译器? 操作系统? 还是物理内存?
初学者不太明白, 请大虾指点, 非常感谢!

回复列表 (共5个回复)

沙发

应该可以无限大吧,不过要看你内存有多大了

板凳

理论上是无限大的~~但是受限于内存的大少~

3 楼

受限的因素比较多,但是,不受物理内存限制。(你编译出的程序,即使你的机器物理内存有限,但你可以找到一个物理内存更大的机器,从而成功运行。另外,考虑虚拟内存。)

1、来自编译器的限制:大小不能超过size_t所能表示的最大值。
2、来自操作系统的限制:32位windows系统中,一个程序所能使用的内存最多不超过2G(也有说是3G的,我也不是很清楚)。其它操作系统类似。

另外,堆栈上的数组一般都不能太大。一般所有的局部变量(static的不算在内)加起来不能超过1M。可以突破这个限制,但一般不必突破。
用全局数组(不论是否用static修饰)、static数组、动态分配的数组,都可以无视这个限制,基本只受限于前面两条。

4 楼

[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 楼

2、来自操作系统的限制:32位windows系统中,一个程序所能使用的内存最多不超过2G(也有说是3G的,我也不是很清楚)。其它操作系统类似。
赞同楼上的这句话。
我以前看<深入解析windows操作系统4>中貌似说了2g给应用程序,2g留给内核。

我来回复

您尚未登录,请登录后再回复。点此登录或注册