C++ 动态二维数组分配

C++ 动态二维数组分配,c++,C++,我正在创建一个动态二维数组并分配它。我的for循环在分配错误的情况下运行10-15次(每次值都不相同)后出现错误。任何帮助都将不胜感激 __int32 aLarge = 8121432; __int32 bLarge = 8121784; ActualPosition** myPositions; myPositions = new ActualPosition*[aLarge]; for (int x = 0; x < aLarge; x++) { try {

我正在创建一个动态二维数组并分配它。我的for循环在分配错误的情况下运行10-15次(每次值都不相同)后出现错误。任何帮助都将不胜感激

__int32 aLarge = 8121432;
__int32 bLarge = 8121784;
ActualPosition** myPositions;

myPositions = new ActualPosition*[aLarge];

for (int x = 0; x < aLarge; x++)
{
    try
    {
        myPositions[x] = new ActualPosition[bLarge];
    }
    catch (bad_alloc& ba)
    {
        // Error here
    }
}
\uuu int32 aLarge=8121432;
__int32 bLarge=8121784;
实际位置**myPositions;
myPositions=新的实际位置*[A大];
对于(int x=0;x
如果
sizeof(ActualPosition)=1
则需要61431 GB内存来容纳阵列。因此,除非你有一台非常大的计算机,否则你的内存将耗尽

如果
sizeof(ActualPosition)==1
则需要61431 GB的内存来保存阵列。因此,除非你有一台非常大的计算机,否则你的内存将耗尽

当你用
C++
标记你的问题时,不管@NathanOliver提出的内存大小问题,我建议对二维数组使用库容器

例如:

std::vector<std::vector<ActualPosition>> myArray(aLarge);
for( auto v: myArray )
   v.resize(bLarge);
如果您想要更安全的东西,请使用
at()
,无需绑定检查:

myArray.at(i).at(j) = somevalue;

如果大小在编译时已知(代码中似乎就是这种情况),那么在用
C++
标记问题时,也可以使用
std::array

,并且不管@NathanOliver提出的内存大小问题,我建议使用二维数组的库容器

例如:

std::vector<std::vector<ActualPosition>> myArray(aLarge);
for( auto v: myArray )
   v.resize(bLarge);
如果您想要更安全的东西,请使用
at()
,无需绑定检查:

myArray.at(i).at(j) = somevalue;

如果在编译时知道大小(代码中似乎就是这种情况),您还可以使用
std::array

您试图解决的高级问题是什么?你不可能在一台典型的计算机上分配所有的内存。可能是a?你想解决的高级问题是什么?你不可能在一台典型的计算机上分配所有的内存。也许是一台?