
調べた範囲で分からなかったので質問します。C言語で
double a[N][N]={0};
のように、2次元配列を使って数値計算をしているのですが、Nの値を変更していったとき、Nが250を越えたあたりからプログラムが動かなくなってしまいました。正確には実行しても何もされずにプロンプトが帰ってきてしまいます。
N=255までは実行できました。
そこで質問なんですが、C言語の配列の添え字には限界が定められているのでしょうか?限界が規定されている場合、それはいくつまでで、それを越えて添え字を設定することは可能でしょうか?
データを取る関係上、添え字を少なくとも1万程度にしたいと思っています。
ご回答お願いします。
実行環境 windows XP HE SP2 : intel core duo 1.60GHz : メモリ1GB
コンパイラ Borland C++ 5.5.1
No.2ベストアンサー
- 回答日時:
上限はありませんが 変数を宣言する位置により確保できるかが決まります
関数の中やクラス宣言の中などですととれない場合があります
これは スタック上に確保しようとするためです
mallocなどで動的に確保するか 関数やクラスの定義の外で確保しましょう
// こちらはヒープ上に確保
doube b[256][256];
int main(int argc, char *argv[])
{
// こちらはスタック上に確保
double a[256][256];
}
マニュアルなどで変数の確保領域が何処に取られるのかを確認しましょう
ご回答ありがとうございます。言語仕様上の限界はないということですね。記述場所によって確保される領域が変わるんですね。知らなかったので調べときます。言語仕様に限界があるかを知りたかったのであとは自分で原因を考えたいと思います。ありがとうございました。
No.1
- 回答日時:
> Nが250を越えたあたりからプログラムが動かなくなってしまいました。
コードを提示してくださると、どこに問題があるかがもしかすると
わかるかもしれません。
> C言語の配列の添え字には限界が定められているのでしょうか?
言語仕様上の限界はないと思います。
> 限界が規定されている場合、それはいくつまでで、それを越えて添え字を設定することは可能でしょうか?
仮に限界を規定しているとすると、それを超えた添字を設定することは
理論上不可能です。
なぜなら、そこが上限なのですから。
ご回答ありがとうございます。言語仕様上の限界はないということですね。それが知りたかったのであとは自分で原因を考えたいと思います。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- Excel(エクセル) [オートフィルター]機能について 3 2023/02/04 14:32
- Java Java 南京錠 2 2023/02/04 11:46
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- C言語・C++・C# C言語の質問です。 以下の命令を実行するプログラムを作りました ①文字列aとbの長さを表示 ②aとb 1 2022/04/29 15:35
- その他(プログラミング・Web制作) awkの文字列比較はPOSIXロケールまたはCロケールにおいてバイナリ値の比較に使えるか gawkな 1 2023/04/22 09:21
- Visual Basic(VBA) A列にある値をB列・C列にVBAで切り出し 3 2022/04/09 19:20
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
callocの処理速度
-
128ビット変数の符合表現について
-
VB6からVCで作成したDLLへのvoi...
-
ヒープ領域の限界値設定
-
x64環境で連続4GB以上のメモリ...
-
reallocについて
-
仮想領域にウインドウを描画
-
C++で、メンバもヒープに確保さ...
-
GDI+におけるメモリの開放について
-
C++とC#って何が違うのですか?
-
C++ 構造体のnew
-
HEAP に関すること
-
DLLで同じメモリ領域を参照する...
-
入れ子になった構造体について
-
malloc メモリリークについて
-
C言語 配列の長さの上限
-
WSH(VBS)でJSONの文字列を読み...
-
C++ メンバイニシャライザリス...
-
プログラミング言語の変数と数...
-
コンストラクタ内での動的メモ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
allocってなんですか?
-
C++のnewで確保したメモリーの...
-
newしないオブジェクトについて
-
c言語のポインタへの文字列入力...
-
プログラムが途中で強制終了し...
-
Win32APIでのメモリ管理について
-
グローバル変数のサイズ
-
ヒープメモリの解放について
-
stringの最大サイズ
-
Accessで、メモリを開放するタ...
-
入れ子になった構造体について
-
void*型のデータサイズ
-
DLLで同じメモリ領域を参照する...
-
callocの処理速度
-
mallocで確保するメモリの領域...
-
ビットをローテートするプログ...
-
DLLのマルチスレッドの動作につ...
-
C++で、メンバもヒープに確保さ...
-
LoadLibraryでAccess Violation...
-
配列の添え字の最大数とは?
おすすめ情報