该机器具有2 GB和更多可用内存。 类似于阵列的最大元素数量仅受OS /计算机功能的限制。 也就是说,具有最少2 GB的阵列可以具有2 ^ 32 -1个元素。 但编译器不会错过。如果我真的想要一个包含2 ^ 32个元素的数组怎么办? :)我试过2 ^ 31-1,但它不起作用...... OS 64位,6 GB内存,Win32控制台应用程序
char * buffer = new char[2147483647]; //Microsoft C++ exception: std::bad_alloc at memory location 0x004FF998.
答案 0 :(得分:6)
您 CAN NOT 在Windows 32位应用程序中获得2 GB单一分配。您认为可以,因为您可以使用/ LARGEADDRESSAWARE获得3或4 GB。但你不能。
Windows操作系统maps some trap pages right around the 2GB mark,用于捕捉我认为的某些编程错误(实际上读取链接,我错了,它使Alpha AXP端口更容易)。这意味着你的2 GB阵列无处可以适应。
所以是的,将您的应用程序构建为64位应用程序。