VB(.NET Framework)とは便利なもので、
dim a as integer, b as integer
a = 100
b = 100
dim c(a, b) as double '→ 配列の要素数を実行時に決定できる
'↓ たったこれだけの記述で、テキストファイル全行を配列に格納できる
'↓ しかも、配列の要素数は勝手に決まる
Dim lines As String() = System.IO.File.ReadAllLines("abc.txt", enc)
等が可能であり、N88BASICやTurboC++の頃と比べると隔絶の感があります。
しかし、世の中そう甘くはなく、
a = 10000
b = 10000
だと、
dim c(a, b) as double のところで・・・
あるいは、"abc.txt"が100万行もあるものだと、
Dim lines As String() = System.IO.File.ReadAllLines("abc.txt", enc) のところで「OutOfMemoryException」が発生します。
私が一応調べたところ、OutOfMemoryExceptionについて鋭く切り込んでいるものとしては、
http://msdn.microsoft.com/ja-jp/library/9w766t6y …
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.ph …
http://oshiete1.goo.ne.jp/qa4920589.html
と、あといくつかしかありませんでした。
32bitアプリケーションには、確かに「利用できるメモリ量は通常2GB」という壁があるのかもしれませんが、100万行でもファイルサイズはせいぜい400MByte程度ですよ。「連続したメモリ領域の確保に失敗する」のであれば、OSの力を借りてでも何とかするべきでしょう。
「64 KB 以上のメモリを消費する大規模メソッドのプログラミングを行わない」なんて、昔のsmallモデルを思い出します。
64bitOSが実稼働する時代になっても、やはり
・メモリを確保できない可能性を考慮する
・危なそうな時は、工夫する
しかないものなのでしょうか。
確かに、「それが常識」と言ってしまえばそれまでなのですが。
Listジェネリッククラスをちまちまと使うより、素の配列の方がはるかに処理が軽いはず。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) vbaの計算 if elseと範囲について 6 2022/11/26 01:49
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
メモリと配列に関して
Visual Basic(VBA)
-
VB.net 任意の例外を発生させるには・・・
Visual Basic(VBA)
-
DoEventsがやはり分からない
Visual Basic(VBA)
-
-
4
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
5
CloseとDisposeの違い
Visual Basic(VBA)
-
6
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
7
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
8
メモリ不足
Visual Basic(VBA)
-
9
タブキー押下時のイベントをひろいたい。
Visual Basic(VBA)
-
10
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
11
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
12
変数の参照でエラーが出てしまいます。(VB.NET)
Visual Basic(VBA)
-
13
フルパスから最後のディレクトリ名を取得したい。
Visual Basic(VBA)
-
14
VB.NETでのnothing の意義について
Visual Basic(VBA)
-
15
画像処理したBitmapをピクチャボックスで表示すると、例外が発生して
Visual Basic(VBA)
-
16
C#において、同じインスタンスを何度もnewしてよいでしょうか。
その他(プログラミング・Web制作)
-
17
VB.NET DataGridView 縦スクロールバーを常に表示
Visual Basic(VBA)
-
18
ひとつのファイルにクラスは1つ?
Java
-
19
同じSQL文で極端に検索が遅くなる時がある
MySQL
-
20
TCP/IP通信時のサーバーからの受信
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
エクセルでXY座標に並べられた...
-
CheckBoxの配列化
-
Excel2010のinputboxで複数デー...
-
定数配列の書き方
-
VBAでMODE関数をつくる
-
Dir関数で読み取り順を操作でき...
-
VBA ReDim と ReDim Preserve ...
-
VB6のメモリ解放に関して
-
excel vbaの配列なんですが・・・
-
C#でbyte配列から画像を表示さ...
-
複数のtextboxの処理を一括で行...
-
配列のペースト出力結果の書式...
-
構造体配列内の文字列検索のよ...
-
.NET 文字コードの変換
-
VB6からの移行したいけど、VB.N...
-
countif/sumifのようなVBA関数
-
EXCEL VBA 配列デー...
-
テキストボックの文字を一行ず...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
Excel2010のinputboxで複数デー...
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
配列のペースト出力結果の書式...
-
Dir関数で読み取り順を操作でき...
-
エクセルでXY座標に並べられた...
-
VBAで配列引数を値渡しできない...
-
C++で作成したDLLにVBAから配列...
-
構造体配列の特定のメンバーをF...
-
OutOfMemoryExceptionの回避策...
-
大量の変数を定義するにはどう...
-
VBAでMODE関数をつくる
-
VBScriptでCSVファイルを読み出...
-
定数配列の書き方
-
Segmentation Fault (メモリ制限?)
-
Excelのメモリ(配列)の上限は2G...
-
Redim とEraseの違いは?
-
CheckBoxの配列化
-
配列の中の最大値とそのインデ...
おすすめ情報