0

我正在尝试修复在运行 C++ 程序时发生的分段错误错误,该错误是由我调用的结构过大引起的。我正在寻找一种方法来使用我预先存在的 C++ 结构并将其从堆栈移动到堆。

我的代码如下所示:

n = 300;

struct arrayStruct {
   double arr[n][n];
};

int main(int argc, char *argv[]){

   arrayStruct temperature;
   // do a bunch of stuff including passing and receiving the arrayStruct within a few    functions
return 0

}

我尝试过使用 malloc 和 new 但似乎只得到了我不知道如何修复它们的错误。我已经在结构和主文件中尝试过,但似乎无法让它工作。

提前致谢

4

2 回答 2

0

尝试使用向量创建二维数组:

#include <vector>

 struct arrayStruct {
   arrayStruct()
   : arr(n, std::vector<double>(n))
   {
   }
   std::vector<std::vector<double>> arr;
};
于 2013-02-09T04:01:38.113 回答
0

arrayStruct您可以在堆上分配一个实例:

std::unique_ptr<arrayStruct> temperature(new arrayStruct());
于 2013-02-09T04:05:15.177 回答