• ベストアンサー

変数の宣言について

変数の宣言のことなんですけど,何個ぐらい宣言できるのでしょうか?相当な数を宣言するとメモリ不足になってしまうそうで・・・。これから作ろうとしているプログラムは変数を相当数(それこそ万単位)なもので。ご回答の方,よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.6

多次元配列のサイズを計算してみましょう。 型のサイズ(Integerなら2byte)に各次元の要素数を掛けた値です。 Integerが一万個なら約20Kbyteです。 この程度でメモリを心配する必要はありませんね。

その他の回答 (5)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.5

動的配列、つまり、ReDimで配列のサイズを定義するような作りにすれば、スタック上にメモリが確保されなくなるので大きな領域を確保することが可能です。

  • duckling
  • ベストアンサー率47% (88/185)
回答No.4

> 何個ぐらい宣言できるのでしょうか? これは、実行するマシンに依存するのでまちまちです。 まぁ、、それが回答なのですが、、 変数を動的に変更する方法で、使い回すわけにはいかないんですか? 多分、、慣れている人が書けば 数万もの宣言は必要ないと思いますよ。。? アルゴリズムの変更方法を質問した方が早いと思います。 そのプログラムを立ち上げたら 他のソフト立ち上げられない程のプログラムを作ってみた。 というのは、、プログラマとしてどうでしょう。。?

  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.3

>宣言するのは配列で,多次元配列を使いたいんです。 >それを,「integer」で宣言して,計算結果を配列にいれ, >Excelのグラフの等高線みたいなグラフを作図したいと考えています。 計算結果(データ保存)であれば、Excel(xls)ファイルに保存して 利用するようにすればいいと思いますよ。 グラフ利用なら、後々のことも考えてエクセルで検討するので如何でしょうか。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

配列でない変数を1万個も使うのですか。信じられない。 配列の要素が1万個になるかも知れないと言うことでは ないですか。時系列的測定・観測値などではないのですか。 ・むしろVBの親戚のVBAで処理を考えられたら。こちらは 65536行×256列のセルを理論的に使えるし、 メモリの利用も、最小限になるよう、(素人の方法でなく)理論に裏付けられた仕掛けがあると思う(推定)。 ・CSVファイルのフィールドに記録し、バッチ処理をすれば 変数はそんなに要らないと推定する。 ・処理をモジュールに分けられませんか。 ・配列のメモリの解放も検討しては。 多分1万個のデータの具体例具体像を示したら、アドバイス しようとする人がでるのでは。

Precision
質問者

補足

宣言するのは配列で,多次元配列を使いたいんです。それを,「integer」で宣言して,計算結果を配列にいれ,Excelのグラフの等高線みたいなグラフを作図したいと考えています。また,計算上同じような配列をもう一組用意しなければならない状態なので・・・。もう少し勉強してみます。

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.1

開発、実行環境のマシンでのメモリが何MBあるかわからないので、答えようがないのですが、 変数で確保するメモリの容量の合計はどのくらいになるのでしょうか? その値とマシンのメモリの値を比較して考えてみればわかるのではないでしょうか? あと、万単位の変数がすべて有効なままプログラムは実行されるのでしょうか? そのときおりに使わない変数は開放していけばいいのではないでしょうか。

関連するQ&A

  • vbscriptの変数宣言

    教えてください。 プログラム初心者です。 vbscriptで変数をDimで宣言しているものと。Dim無しの変数宣言していないく、 いきなり代入して使っているものもあります。宣言して使うものと使わないものの違いは何でしょうか? よろしくお願いします。

  • 変数の宣言について

    VBですけれども 変数の宣言なしに For i  ・  ・   ・ Next i などを記述しますと「変数の宣言がされていません」 というメッセージがでるのですが、テキストなどでは 変数の宣言などしていなくとも動作しますこれはどうして どういうことなのかご存知の方教えてください。 Dimとかの宣言もなしにです。 著書は 独習Visual Basic 6.0 などです。

  • VB.NETで変数を繰り返し宣言

    VB.NETでテキストを読み込み、その内容を1行ずつ変数に入れたいのですが テキストファイルの行が一定では無く、変数を予め大量に宣言するわけにもいかないので ForNextの間に宣言の処理を入れて数を1つずつ増やしながら変数を宣言する と言った事は出来ますでしょうか? 例えば テキストファイルの行が15行だったら TextLine1からTextLine15までに1行ずつ入れる感じです 初歩的な質問ですが詳しい方回答よろしくお願いします

  • 変数の宣言方法の相違によるエラー

    ある変数を関数内で宣言した場合、デバック時に「ハンドルされていない例外が発生しました」っていうエラーになります。でも、グローバル変数として宣言した場合には、同じエラーが発生しませんでした。今回の場合、配列を10,000,000ぐらい確保しようとしたので、メモリ領域を確保できなかったが、エラーの発生原因だと思います。メンバ変数とグローバル変数で確保できるメモリ領域にどれくらいの違いがありますか。その他にクラスのメンバ変数として宣言した場合とグローバル変数として宣言した場合でどのような違いがありますか。 わかる方が教えてください。よろしくお願いします。

  • 変数の宣言箇所

    javaの変数の宣言箇所についてご意見をお聞かせください。 javaでメソッドの先頭で変数を纏めて宣言しているのを良く見かけますが、これは何故でしょうか。 自分は変数を使う時に一緒に宣言する方が見やすいと思いますし、ifやfor文の中で変数を宣言すると抜けたときに開放されると思います。 見やすさ、効率等を考えても、変数を使用する時に一緒にする方がよい と思いますが、如何でしょうか。 C言語とかの習性でしょうか。 ご意見、宜しくお願いします。

    • ベストアンサー
    • Java
  • 全ての変数をバリアント型で宣言した場合

    VBAでプログラムを作る時に 全ての変数をバリアント型で宣言した場合 どういう問題が発生しますか? 今のパソコンならメモリを気にしなくても問題ないから 全てバリアント型でもいいのでしょうか?

  • Excel VBAでグローバルな変数はどこで宣言すべきか?

    Excel VBAについての質問です(もしかするとExcelに限った話ではないかもしれません)。 宣言セクションで変数の宣言を行うとき、Publicステートメントをつけた場合の適用範囲(グローバルな範囲)がわかりません。 これは、Sheet、ThisWorkbook、標準モジュールなど、それぞれの宣言セクションの場合で違うのでしょうか? また、宣言が有効になるタイミングも違うのでしょうか? ネットで調べたり、本で調べたのですが、私の理解が不足しているのか、矛盾して書かれているように思います。 一方では全てでグローバルにあるように書かれているように思え、一方ではグローバルになる範囲が違うとかかれているように思うのです。 試してみてもいいのですが、確証がもてないままこれから使い続けるのは気持ち悪いので・・・。 ご回答いただけると幸いです。よろしくお願いします。

  • 教えて下さい。for文内での変数宣言について

    Javaのプログラムで困っています。 for文内でfor分だけ変数を宣言したいのですが、 その際変数名に数字(ナンバリング)を付与した形にしたいと考えています。 例) String Test1 String Test2 : : 上記の様な場合、for文をどの様に作成したらいいですか? num = 5; for(int i = 0; i < num; i++){ String Test = null; } ⇒このままだと変数Testが1つしか出来ない・・・   変数の後にナンバリングしたいのですが上手くいきません。 numの数はユーザの指定で毎回変更されるため、 for文でその数だけ変数を作成したいと考えています。 どなたかご教授宜しくお願い致します。

    • ベストアンサー
    • Java
  • visual c++ のグローバル変数宣言について

    visual c++で、 例えば下記のようにグローバル変数宣言するが 下記プログラムの「FileMei1[0][n1] = 0;」のところでブレークをかけてプログラムを走らせると、ウォッチウィンドウで「FileMei1エラー: 識別子 'FileMei1' はスコープ外です」とでてきます。 グローバル変数宣言のやり方間違っているのでしょうか? namespace TestCpp { extern char FileMei1[300][100]={ 0 }; public void aa{ for(n1=0; n1 < 100 ; n1++) { FileMei1[0][n1] = 0; } }

  • BEGIN{}での変数宣言

    'perl'では変数の有効範囲について、'c' と考えかたが違うようですが、違和感があります。 1000行を超えるような'perl'で、随処で頻繁に使うような重要なグローバル変数では、BEGIN 内で明示的に宣言したほうが、引き継いだひとにも親切にかんじるのですが、みなさんはどうお感じになりますか? 'perl'を作られたかたは、'c'の自動変数を'my'で、'extern'を宣言不要という思想でつくられたのでしょうか? (2回目の質問です。変な質問でしたら、ごめんなさい<ToT>)

    • ベストアンサー
    • Perl

専門家に質問してみよう