在 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]
我有一个 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]