在 C++ 中访问 3D 数组

Accessing a 3D array in C++

我有一个 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);

pic[i] == new char*[width]; -> 为什么有 == 比较而不是 = 赋值?

pic[i][j] == new char[3]; 类似 -> 正在进行比较,没有赋值。

简单地说:

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

访问 pic[i][j][k] 使用:

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