大きいサイズの配列(1次)について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
鹿好き

大きいサイズの配列(1次)について

#1

投稿記事 by 鹿好き » 16年前

2度目の質問になります
前回の質問で、お世話になった方々には重ねて御礼申し上げます。
さて今回の質問なのですが、javaで大きいサイズの配列(具体的にはx[50000]など)を扱っていたのですが、
C言語でおなじように大きいサイズの配列を扱おうとすると、コンパイルはできるのですが、
実行画面で途中でとまってしまいます。
とりあえず、例として簡単なプログラムを組んでみました。
#include <stdio.h>
void main(void)
{
	int i;
	double x[3500];
	for(i=0;i<3500;i++)
	{
		x=0.0;
		printf("%5d\n",i);
	}
}

このプログラムを実行すると3000あたりでとまりCPU使用率が100%になってしまいます。
これはPCスペックの問題なのか、コンパイラの問題なのか、それとも根本的にプログラムの書き方が間違ってるのか
もしくは単にC言語ではそこまでの大きさの配列は扱えないのか、はたまたそれ以外の理由なのか、
お答えいただければと思います。
(理想は可能ならdouble型の配列でサイズ[50000]くらいのを4つ扱いたいとおもっています、
なんだか無理っぽい気がひしひしとしてますが)

以下スペックその他になります。
OS ウインドウズXP
コンパイラ LSI C-86 試食版
PC VGC-H31B
メインメモリ 512MB
CPU インテル&reg; Celeron&reg; D プロセッサー 351 (3.20GHz)

C言語の能力 機械工学部生が基礎科目でとりあえず学んだ程度です。

box

Re:大きいサイズの配列(1次)について

#2

投稿記事 by box » 16年前

>コンパイラ LSI C-86 試食版

CPU使用率の件はよくわかりませんが、
このコンパイラーは別のものに取り替えられる方がいいような気がします。
MS-DOS時代の16ビットコンパイラーを使い続けるメリットは
ほとんどないように思います。
double型で50000×4=200000個の領域を定義しようとすると、
おそらくコンパイル時にout of memoryあたりのエラーが出るのではないかと思います。

Dixq (管理人)

Re:大きいサイズの配列(1次)について

#3

投稿記事 by Dixq (管理人) » 16年前

VisualC++
http://www.microsoft.com/japan/msdn/vstudio/express/

この辺お使いになってはどうでしょうか。
Microsoft製なので知名度も高いですし、
色んなウェブに落ちているサンプルもVC++のものが多いですし、
デバックなども出来るので便利では無いかと思います。

toyo

Re:大きいサイズの配列(1次)について

#4

投稿記事 by toyo » 16年前

LSI-C試食版はスモールモデルと呼ばれるプログラムしか作成できません。
スモールモデルというのはポインタが2バイトのnearポインタと呼ばれるものだけになり64Kバイトのメモリしか扱えません。
ちなみにintも2バイトになります。
64Kバイトのプログラムですからスタック領域もかなり少なくなるためdouble(8バイト)を3500個を確保するのは無理でしょう。
もちろん他のコンパイラでもスタックは有限ですのでスタック内に確保できる数には制限があります。
大きいサイズの配列はスタック外に確保されるようにグローバルで宣言したりmalloc等で確保したほうがいいでしょう。

鹿好き

Re:大きいサイズの配列(1次)について

#5

投稿記事 by 鹿好き » 16年前

boxさま,Dixq (管理人)さま,toyoさまお早い回答ありがとうございます.
返信が遅くなって申し訳ありません.
VisualC++2008,インストールしてプログラムをコピペして実行してみましたところ解決しました!
(一応今後のことも考えて,グローバルで宣言しておきました,mallocはちょっと使い方が分からなかったので参考書と格闘してからになります)
やっぱりLSI-C試食版は古すぎたのですね,(VC++6.0というのもPCの片隅に入っていたのですが98年発売?らしい骨董品…,日本語と英語が入り混じってわけがわからなかったw)
とりあえずこれであとはカタカタとコードを書き込むだけです.
本当にありがとうございました.

Dixq (管理人)

Re:大きいサイズの配列(1次)について

#6

投稿記事 by Dixq (管理人) » 16年前

専門ではないのに実験でプログラムを使う事になったりすると大変ですよね。
私の知り合いも、実験データを計算する為に、数百個ものデータを配列に手入力していました・・。
(ファイルから読めるということを知らなかったらしいです)

なので、もし「大変だな~・・もっと簡単にプログラムで実現出来ないのかな」って事があればまた
気軽に聞いて下さいm(_ _)m

閉鎖

“C言語何でも質問掲示板” へ戻る