在 c++ 中,在分配内存时会发生 bad_alloc,或者至少这是我所理解的,但是现在我在从数组中读取内存时遇到了这个错误。我创建数组:
int * possible = new int[ suma ];
然后我得到了两个循环,在那里我访问了整个数组:
for( int i = 0; i < n - 1; i++ ){
int rowWidth = (i - 1) < 0 ? 0 : permutationsNumber[i];
for( int j = 0; j < permutationsNumber[i]; j++ ){
possible[i * rowWidth + j ] = j;
}
}
for( int i = 0; i < n - 1; i++ ){
int rowWidth = (i - 1) < 0 ? 0 : permutationsNumber[i];
for( int j = 0; j < permutationsNumber[i]; j++ ){
std::cout << possible[i * rowWidth + j ] << "\n";
}
在第二行std::cout << possible[i * rowWidth + j ] << "\n";
中,我得到了错误。
我在 Windows 上编译代码,尝试使用 3 台不同的 Windows 8 和 7 机器,使用 VS 2010、2012 和 2013 并得到相同的错误。
当我在 Mac 上编译代码时没有错误,使用 compileonline 也是如此
我认为不那么重要的变量值是:
n = 4;
permutationsNumber = {4, 12, 24};
suma = 40;