c++ - 堆上非常大的数组 (Visual C++)

标签 c++ arrays visual-c++ visual-c++-2010

我希望有人能帮助我,我正在尝试使用 Visual C++ 2010 在我的应用程序上创建一个 int[400000000](4 亿)数组,但它会生成溢出错误 相同的代码在使用 g++ 的 linux 上运行。 我需要这个,因为我正在处理大型矩阵。 提前谢谢你。

最佳答案

如果您使用的是 32 位应用程序,则默认情况下您只有 2GB 的用户地址空间。 4亿个整数大约是1.5GB。您很可能没有这么大的连续地址空间。可以强制 32 位窗口为每个进程分配 3GB 的用户地址空间,但这可能只是您情况的权宜之计。

如果您可以迁移到 64 位架构,那么这应该不是问题;否则,您应该找到一种不需要单个连续存储 block 的方式来存储矩阵数据,例如将其存储在 block 中。

关于c++ - 堆上非常大的数组 (Visual C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3691196/

相关文章:

c++ - 对于矩阵乘法,Eigen + MKL 比 Matlab 慢

c++ - CCSpriteFrameCache 无法正确检索后缀为 '-ipad' 的图像

javascript - 对于 JavaScript 中的堆算法,array.push 产生的结果与 console.log 不同

C++ 数组(初学者)

java - 将 OpenCV 代码从 C++ 转换为 Java

c++ - v <int> pos(MAX)v <int> tmp是非类类型 ‘__gnu_cxx::__alloc_traits<std::allocator<int>>::value_type {aka int}’ pos [i] .push_back(tmp);

java - 这是按引用传递还是按值传递

c - 如何应用结构偏移量?

c++ - VC++中如何将4个整数组合成一个整数?

c - MSVC 的 C 运行时中有哪些类似 POSIX 的函数?