
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VB.net 任意の例外を発生させるには・・・
Visual Basic(VBA)
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
ExecuteNonQueryメソッドの戻り値
その他(プログラミング・Web制作)
-
-
4
メモリと配列に関して
Visual Basic(VBA)
-
5
OutofMemory.Exceptionのエラー
Visual Basic(VBA)
-
6
Chr(13)とChr(10)の違いは?
PowerPoint(パワーポイント)
-
7
Excelのメモリ(配列)の上限は2Gではないのか
Excel(エクセル)
-
8
C#のOutOfMemoryException発生要因について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
Redim とEraseの違いは?
-
VB6のメモリ解放に関して
-
VB.NETの配列の限界を教えてく...
-
配列の中の最大値とそのインデ...
-
C#でbyte配列から画像を表示さ...
-
配列のペースト出力結果の書式...
-
ジャグ配列生成時の1オリジン
-
COBOLの基本的な事なので...
-
OutOfMemoryExceptionの回避策...
-
ポーカーを作りたいのですが・・・
-
VBAでMODE関数をつくる
-
VBA: Select Caseを短くしたい
-
大量の変数を定義するにはどう...
-
VB.NETの配列にExcelから読み込...
-
(VBA) 配列の文字列を昇順で並...
-
Imagelist の使い回しについて
-
VBAで配列引数を値渡しできない...
-
クリスタルレポートで文字列の...
-
SQLを発行とは?クエリの作成と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
エクセルでXY座標に並べられた...
-
vba フィルター 複数条件 3つ以...
-
配列のペースト出力結果の書式...
-
OutOfMemoryExceptionの回避策...
-
配列の中の最大値とそのインデ...
-
複数のtextboxの処理を一括で行...
-
Dir関数で読み取り順を操作でき...
-
VB6からの移行したいけど、VB.N...
-
COBOLの基本的な事なので...
-
構造体配列の特定のメンバーをF...
-
大量の変数を定義するにはどう...
-
EXCEL VBAの課題です
-
Redim とEraseの違いは?
-
VB.NETの配列にExcelから読み込...
-
VBAでMODE関数をつくる
-
VB.NETにて、構造体へデータを...
-
1ビットごとの配列を作りたい
-
VBAで配列引数を値渡しできない...
おすすめ情報