在C++中创建太大的数组,如何解决?

Kin*_*uoc 9 c++

最近,我在C++工作,我必须创建一个array[60.000][60.000].但是,我无法创建此数组,因为它太大了.我试过float **array,甚至static float array没有什么是好的.有没有人有想法?谢谢你的帮助!

Mys*_*ial 17

大小矩阵60,000 x 60,000具有3,600,000,000元素.

你正在使用类型,float所以它变成:

60,000 x 60,000 * 4 bytes = 14,400,000,000 bytes ~= 13.4 GB
Run Code Online (Sandbox Code Playgroud)

你的机器甚至有那么多记忆吗?


请注意,堆栈与堆的问题甚至不重要,除非您有足够的内存开始.


这是一个可能的问题列表:

  • 你的内存不足.
  • 如果矩阵是全局声明的,那么您将超过二进制的最大大小.
  • 如果矩阵被声明为本地数组,那么你将会破坏你的堆栈.
  • 如果您正在编译32位,则远远超过2GB/4GB寻址限制.

  • 是的,你打破了编译器!http://stackoverflow.com/a/2155066/489590 (2认同)