1

私はここにいくつかの C コードを書いていますが、問題に遭遇しました:

カスタムタイプの配列があります。この配列のサイズを設定したい:

typedef struct reg Reg;
Reg myArray[958279];

プログラムを実行すると、セグメンテーション違反が発生します。

次に、記憶領域を動的に割り当てる malloc を使用してみましたが、驚いたことにうまくいきました。

Reg *myArray = (Reg*)malloc(sizeof(Reg)*958279);

したがって、静的フォームの配列宣言にはサイズ制限が必要であると想定しました。

この事実への言及はどこかにありますか?または、私の質問について完全に間違っていますか?

4

1 に答える 1

2

最初のコードの配列は、おそらくスタックに割り当てられており、収まりません。通常、スタックのサイズは固定されており、スタックに巨大なオブジェクトを割り当ててはなりません。あなたが発見したように、解決策はヒープから割り当てることです。

于 2012-05-19T18:35:42.277 に答える