の 2 次元配列を生成しようとしてstruct
いますが、プログラムが起動しません。ウィンドウがフリーズし、数秒後にプログラムが終了します。理由はありますか?
これは、配列を定義しようとするファイルですcells
。
#ifndef _FIELD_H_
#define _FIELD_H_
class Field {
public:
static const int minX = -400;
static const int maxX = 400;
static const int minY = 0;
static const int maxY = 400;
Field();
private:
struct absCell {
int material;
float health;
} cells[maxX - minX + 1][maxY - minY + 1];
};
#endif
次の 4 行を削除すると、プログラムを実行できます。
struct absCell {
int material;
float health;
} cells[maxX - minX + 1][maxY - minY + 1];
これがどのように起こるか考えていますか?どんな助けでも大歓迎です!
アップデート
どうやら問題は、この配列が非常に大きくなることです。これを最適化するのを手伝ってくれるかもしれません。
Material は 0 から 10 の間の int である必要があります。Health は 0 から 1 の間の float で、最大 2 桁の小数部である必要があります。
これらの変数のサイズを制限するにはどうすればよいですか?
更新 2
Mark B は、vectors
while itwasntpete の使用を提案し、ポインター new と delete の使用を提案しました。これら2つの方法の違いはどこにあり、長所と短所は何ですか? 再度、感謝します!