c++ - 如何为数组分配大量内存?

标签 c++

机器有 2 GB 和更多可用内存。 就像数组元素的最大数量仅受操作系统/计算机功能的限制。 也就是说,最小为 2 GB 的数组可以包含 2 ^ 32 -1 个元素。 但是编译器不会错过。如果我真的想要一个包含 2 ^ 32 个元素的数组怎么办? :) 我试过 2 ^ 31-1,但它不起作用...... 操作系统 64 位,6 GB 内存,Win32 控制台应用程序

char * buffer = new char[2147483647]; //Microsoft C++ exception: std::bad_alloc at memory location 0x004FF998.

最佳答案

不能在 Windows 32 位应用程序中获得 2 GB 的单一分配。你会认为你可以,因为你可以使用/LARGEADDRESSAWARE 获得 3 或 4 GB。但你不能。

Windows 操作系统 maps some trap pages right around the 2GB mark ,用于捕获我假设的某些类型的编程错误(实际上阅读了链接,我错了,它使 Alpha AXP 端口更容易)。这意味着您的 2 GB 阵列无处可放。

是的,将您的应用程序构建为 64 位应用程序。

关于c++ - 如何为数组分配大量内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43712017/

相关文章:

c++ - 在 C++ 中包含空格的文本文件!

c++ - Bison 风格 : is using my own stack bad? 全局变量不好吗?

c++ - 继续 while 循环直到 EOF (Qt)

c++ - std::set_new_handler 如何提供更多可用内存?

c# - C#的lock关键字到C++的转换

c++ - 获取错误 : "ISO C++ forbids comparison between pointer and integer [-fpermissive]" How do I fix?

c++ - ReadDebuggeeMemoryEx 读取调试对象失败

c++ - 如何声明一个未知大小的结构?

c++ - 为什么 `const int ci = 2; std::forward<int>(ci);` 不起作用以及如何修复/解决它?

c++ - 为什么 C++ 和 strace 不同意 open() 系统调用需要多长时间?