C++ 动态二维数组分配
我正在创建一个动态二维数组并分配它。我的for循环在分配错误的情况下运行10-15次(每次值都不相同)后出现错误。任何帮助都将不胜感激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 {
__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?你想解决的高级问题是什么?你不可能在一台典型的计算机上分配所有的内存。也许是一台?