Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中访问3D阵列+;_C++_Multidimensional Array_Segmentation Fault_Dynamic Memory Allocation - Fatal编程技术网

C++ 在C+中访问3D阵列+;

C++ 在C+中访问3D阵列+;,c++,multidimensional-array,segmentation-fault,dynamic-memory-allocation,C++,Multidimensional Array,Segmentation Fault,Dynamic Memory Allocation,我有一个字符***,我动态地分配一些内存给它。然而,当我试图给它赋值时,我得到了分段错误。我用的尺码不是太大。当我创建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

我有一个字符***,我动态地分配一些内存给它。然而,当我试图给它赋值时,我得到了分段错误。我用的尺码不是太大。当我创建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=新字符**[高度];
对于(int i=0;i
pic[i]==新字符*[width]->为什么有一个
=
比较而不是
=
赋值

类似地,对于
pic[i][j]==新字符[3]->正在进行比较,没有赋值。

简单地说:

pic = new char[height * width * 3];
访问
pic[i][j][k]
使用:

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

@πάνταῥεῖ 哈哈,还没有。我必须克服这个分段错误,为什么不使用嵌套的
std::vector
?使用起来简单得多。你知道
=
=
之间的区别吗?我假设任何打开了所有警告的编译器(总是应该这样)都会提到这一点。例如,Visual C++:警告C4553:“==”:运算符无效;您打算使用“=”吗?因为我们必须将给定的代码转换为线程。我们不能使用向量或任何其他东西。只需使用给定的代码并添加线程即可。我已经做了艰难的一点,但在这一点上卡住了,这应该是容易的!你可以很好地使用像
std::vector
std::thread
这样的东西来支持移动构造。啊,该死的,我怎么会错过它。无论如何谢谢:)