• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【VB6.0】ファイルからサイズの大きいバイナリデータを読み込む際にエラー)

VB6.0で大きいバイナリデータを読み込む際にエラーが発生する原因と解決方法

このQ&Aのポイント
  • VB6.0で大きいバイナリデータを読み込む際に発生するメモリ不足のエラーについて説明します。
  • エラーの原因としては、バイト配列の要素数に上限があるためです。
  • 解決方法としては、サイズの大きなファイルを分割して読み込む方法や、一部のデータのみを読み込む方法があります。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

実行環境に依存するようにも思えます 当方で単に確保するのみの確認したところでは ReDimで340MB程度は確保できるようでした 関数が配列を返す場合一時的に内部で使用しているローカル変数と呼び出し元の受け手の配列の2つ領域で同じ大きさの配列が必要になると思われます ファイルの読み込みを 1度にしないといけないのでしょうか 50MB程度のバッファを用意して読み込み、必要な処理を行い 次ブロックを読み込んで、必要な処理 といったループを組めば済むように感じます 終端処理のため処理したByte数の管理は必要でしょうが … LOF関数やLOC関数などを使って残りがいくつあるかは確認可能です

sakura8400
質問者

お礼

回答ありがとうございました! こちらでも調べてみたところ、どうやら配列を宣言するとき メモリに配列の要素数分の「連続したエリア」がないと「メモリ不足」になるらしい、です。 http://chaichan.web.infoseek.co.jp/vbtips/VBMemo2006111601.htm 断片化したメモリをかき集めて作ってはくれないのですね…。 なので >実行環境に依存するようにも思えます というのは、おっしゃる通りでした。 >ファイルの読み込みを 1度にしないといけないのでしょうか ファイルの読み込み自体を一度にする必要はないのですが、 最終的に1つのバイト配列に格納しなければいけないのです…。 結局、「最終的に1つのバイト配列に格納しなければいけない」という状況から 「サイズの大きなファイルを確実に読み込む方法」は「無理!」という結論に至りました。 その状況がなければredfox63さまの回答の通りだったと思います。 ありがとうございましたm(_ _)m

関連するQ&A