所以我在删除3D阵列时遇到了问题。它似乎在我的代码中导致分段错误。这是我的。分段错误是由3D数组的删除引起的,但我不知道为什么。删除3D阵列导致分段错误
int main(int argc, char** argv)
{
//variables
ifstream inputFileStream[ argc - 2 ];
int ***dimensions;
//open inputFileStream and read in values...
//creating the dynamic 3D array and reading in grey values
dimensions = new int**[ argc - 2 ];
for(int i = 0; i < argc - 2; i++)
{
dimensions[ i ] = new int*[ width ];
for(int j = 0; j < width; j++)
{
dimensions[ i ][ j ] = new int[ height ];
for(int k = 0; k < height; k++)
{
inputFileStream[ i ] >> dimensions[ i ][ j ][ k ];
}
}
}
//do something with array
//delete array
for(int i = 0; i < width; i++)
{
for(int j = 0; j < height; j++)
{
delete[] dimensions[ i ][ j ];
}
delete[] dimensions[ i ];
}
delete[] dimensions;
}
'width'的值是什么? – streppel 2014-09-30 18:12:04
您是否在其他地方删除阵列?这可以删除指针的副本,不必是实际的“维度”指针。 – 2014-09-30 18:20:01
我不会删除任何其他地方的数组。宽度的值因您输入的文件而异,但在这种情况下为495 – 2014-09-30 18:29:04