アプリ版:「スタンプのみでお礼する」機能のリリースについて

あるプログラムをつくっていて、コンパイルはできたのですが、セグメントエラーというランタイムエラーが取り除けません。
エラーの発生している行は特定できました。
その行は、以下のようなものです。
AAA aaa[4][64][4];
AAAは型名、aaaは配列名です。3次元配列の宣言でエラーが発生していました。
エラーの発生している行はこの行で、代入などを行っている部分ではありません。配列の大きさを考えてみても、メモリが足りなくなっているとは考えづらいのですが、他になにか原因はあるのでしょうか?
考えられる原因を教えてください。

A 回答 (4件)

セグメントエラーは、発生した行そのものに問題が無いケースもあります。


別の箇所の間違いが、発生箇所に影響しただけ、という可能性もあります。

AAAがclass,structなら、この宣言でデフォルトコンストラクタが呼ばれます。
そのコンストラクタに間違いがあれば、エラーになることがあります。


セグメントエラーの原因で多いのは次のようなものです。
・NULLポインタの指す領域にアクセスした
・ポインタ変数を初期化してない不定な値のままにして、そのアドレスにアクセスした
・配列で確保した範囲外の添字を指定した


これ以上は情報不足で回答できません
    • good
    • 0

すみません。

#3の8kBは8MBの間違いです。
    • good
    • 0

メモリは足りていても、最大スタックサイズの制限(環境によるが8kBくらい)により、メモリ不足でエラーになることもあります。

このサイズの変更の仕方はOSによります。aaaの領域をmallocやnewで確保するように変更してエラーにならないのであればこの理由が考えられます。
    • good
    • 0

これだけ出されてもなぁ....



その AAA とかいう型がどう定義されているかもわからないし, この行がどのような関数の中にあるのか (あるいは関数の外にあるのか) もわからんし, とにかく考えるための情報が全然足りない.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!