【问题标题】:Multidimensional array of struct - Segmentation fault结构的多维数组 - 分段错误
【发布时间】:2014-03-29 15:44:01
【问题描述】:

我有一个指向结构数组的指针,当我尝试初始化它时,出现分段错误。

MyStruct **** node = NULL;
node[0][0][0] = new MyStruct();

我尝试使用二维数组,效果很好。

怎么了?

感谢您的回复。

【问题讨论】:

  • vector不是更慢吗?好的,现在我将其重写为vector <vector <vector <MyStruct* > > > node; 仍然是段错误

标签: c++ arrays pointers struct segmentation-fault


【解决方案1】:

您需要在使用前分配内存。你不能不分配和使用就跳3级。

首先分配node。然后就可以访问node[0]了。

现在如果你分配node[0],你可以访问node[0][0]

继续这样下去。

【讨论】:

  • 但总的来说,更喜欢使用std::vector
  • @lethal-guitar 是的,当然。只是回答问题。
  • 是的,这主要是为了 OP :)
【解决方案2】:

先尝试动态分配数组,使用new操作符:

MyStruct ****node = new MyStruct***[MAX_SIZE];
for(int i=0; i<MAX_SIZE; ++i) node[i] = new MyStruct**[MAX_SIZE];
for(int i=0; i<MAX_SIZE; ++i) 
  for(int j=0; j<MAX_SIZE; ++j) node[i][j] = new MyStruct*[MAX_SIZE];
node[0][0][0] = new MyStruct();

【讨论】:

    猜你喜欢
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 2021-03-19
    相关资源
    最近更新 更多