在C ++中访问3D数组

时间:2015-05-31 11:43:37

标签: c++ multidimensional-array segmentation-fault dynamic-memory-allocation

我有一个char ***,我动态地为它分配了一些内存。但是,当我尝试为其分配一些值时,我会遇到分段错误。我使用的尺寸不是太大。它在我创建char [768] [1024] [3]时有效但在我用相同的精确值动态添加它时不起作用。以下是我的代码片段:

pic = new char**[height];
    for(int i = 0; i < height; i++)
    {
        pic[i] == new char*[width];
        for(int j = 0; j< width; j++)
        {
            pic[i][j] == new char[3];
        }
    }
    pic[0][0][0] = 'a';//seg fault here
    exit(1);

2 个答案:

答案 0 :(得分:5)

pic[i] == new char*[width]; - &gt;为什么要进行==比较而不是=分配?

同样适用于pic[i][j] == new char[3]; - &gt;正在进行比较,没有任何转让。

答案 1 :(得分:0)

简单地:

pic = new char[height * width * 3];

使用以下方式访问pic[i][j][k]

pic[i * width + j * 3 + k]