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

ベクトルを使用して2D配列を作成してみてください。

#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 に答える