Error: Total size of array must not exceed 0x7fffffff bytes

前端 未结 2 778
遥遥无期
遥遥无期 2021-01-05 23:41

I have a small C++ program that requires a large 2d array.

int distanceArray[282][9900000];

I am aware that a standard 32 bit console appli

2条回答
  •  囚心锁ツ
    2021-01-06 00:02

    The 64-bit PECOFF executable format used on Windows doesn't support creating executables that have a load size of greater than 2GB so you can't create statically allocated objects bigger than that. You run into a similar problem if you try create such an object on the stack using an automatically allocated object.

    One possible solution would be to dynamically allocate the object:

    int (*distanceArray)[9900000] = (int (*)[9900000]) calloc(282, 9900000);
    

    Or if you want it more C++'ish and don't need it to be zero initialized like a statically allocated array would be:

    int (*distanceArray)[9900000] = new int[282][9900000];
    

提交回复
热议问题