gpt4 book ai didi

c++ - 删除 3D 数组导致段错误

转载 作者:行者123 更新时间:2023-11-28 06:40:07 25 4
gpt4 key购买 nike

所以我在删除 3D 数组时遇到了问题。它似乎在我的代码中导致了段错误。这就是我所拥有的。 segmentation fault是删除了3维数组导致的,不知道是什么原因。

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;
}

最佳答案

分配时,您的“i”值从 0 到“argc-2”,您的“j”值从 0 到“宽度”,您的“k”值对应于“高度”。删除时,您的“i”值从 0 变为“宽度”,您的“j”值从 0 变为“高度”。然而,在这两种情况下,您都使用 [i][j] 进行索引。这是不一致的。

关于c++ - 删除 3D 数组导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26127076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com