メモリに関するエラーの回避方法

文書番号: 410519 - 対象製品
この記事は、以前は次の ID で公開されていました: JP410519
すべて展開する | すべて折りたたむ

目次

概要

この資料はメモリ上のデータ格納の仕様とメモリに関するエラーの発生原因および
回避方法について記述しています。

メモリに格納されるデータの種類と場所

メモリに関するエラーの対処には、メモリ上にそれぞれのデータがどのように
配置されているか、理解しておく必要があります。QuickBASIC 4.2/4.5、
BASIC 7.1、Visual Basic for MS-DOS 1.0 において 640KB のコンベンショナル
メモリは、大きく分けて次の 5 つの部分で構成されています。
  1. Microsoft(R) MS-DOS(R) Operating System (以下 MS-DOS) のシステム領域
  2. 統合環境のコード (プログラミング環境) または、アプリケーションのコード (EXE ファイル)
  3. near メモリ (DGROUP) この領域の確保容量は最大 64KB です。また、主に次のデータが格納されます。
    • BASIC のランタイム情報
    • 記述子 (内部的に可変長文字列や配列の情報を管理するための 4 バイトの変数。 前半 2 バイトでデータの長さを、後半 2 バイトでデータが実際に格納されて いるアドレスのオフセット値を表します。)
    • 変数および定数 (動的配列および far 文字列を除く)
    • スタック (デフォルトで 2 〜 3KB 確保されます)
  4. Quick ライブラリの格納領域 (プログラミング環境) または、ランタイム モジュールの格納領域 (ランタイム分離型 EXE ファイル)
  5. far メモリ

エラーの対処方法

これらのエラーは根本的にメモリが不足している状況では対処できないことが
あります。安定して動作するメモリ容量は環境により大きく左右されますが、
約 480KB の空きメモリがあることが理想的です。
メモリが足りません (QuickBASIC 4.2/4.5)、Out of memory (BASIC 7.1)、メモリが不足です (Visual Basic for MS-DOS 1.0) ================================================================================ エラー コードは 7 です。

原因

作業に必要なメモリが確保できません。

回避方法

  1. CONFIG.SYS で設定している MS-DOS のバッファ サイズを減らしてください。
  2. メモリに常駐しているプログラム (TSR) や不要なデバイス ドライバを外して ください。
  3. 統合環境では、不要なドキュメント ファイルやインクルード ファイルを 解放してください。
  4. 配列を使用している場合は、$DYNAMIC メタコマンドを使用して動的配列にして ください。
  5. BASIC 7.1、Visual Basic for MS-DOS 1.0 で統合環境を使用している場合は、 /Ea オプションを指定して再起動してください。

配列の添字が許される範囲にありません (QuickBASIC 4.2/4.5)、Subscriptoutofrange(BASIC 7.1)、添字が有効範囲にありません (Visual Basicfor MS-DOS 1.0)

エラー コードは 9 です。

原因

  1. 参照している配列の添字が、宣言された数や次元を超えています。
  2. 静的配列のサイズが 64KB を超えています。
  3. 動的配列を使用している場合、コンパイル時にオプション /AH を指定しま せんでした。
  4. 固定長文字列配列の長さが奇数のため、セグメント ブロック内にギャップ が発生しました (BASIC 7.1、Visual Basic for MS-DOS 1.0 のみ)。

回避方法

  1. 配列のサイズを小さくするか、$DYNAMIC メタ コマンドで動的配列にして ください。
  2. 配列要素の長さを偶数にしてください。
文字領域が足りません (QuickBASIC 4.2/4.5)、Out of string space (BASIC 7.1)、文字領域が不足です (Visual Basic for MS-DOS 1.0) ================================================================================ エラー コードは 14 です。

原因

静的変数や記述子が多すぎて near メモリの文字列領域が不足しました。

回避方法

  1. 可変長文字列を固定長文字列にしてください。
  2. 配列を $DYNAMIC メタコマンドで動的配列にしてください。
  3. 統合環境の場合は不要なドキュメント ファイル、ソース ファイル、 インクルード ファイルを解放してください。
スタック領域が足りません (QuickBASIC 4.2/4.5)、Out of stack space (BASIC 7.1)、スタック領域が不足です (Visual Basic for MS-DOS 1.0) =============================================================================== このエラーはトラップすることができません。

原因

FUNCTION プロシージャの再帰呼び出しのネストが深くなりすぎたり、
アクティブなプロシージャ呼び出しや引数が多すぎたために near メモリの
スタック領域が不足しました。

回避方法

  1. STACK (BASIC 7.1、Visual Basic for MS-DOS 1.0 のみ) または CLEAR ステートメントでスタック領域を増やしてください。
  2. プロシージャ内で大きな配列を使用しないようにしてください。
  3. 引数をグローバル変数にしてください。

Program-memory overflow

コンパイル時のエラーです。

原因

コンパイル中に生成されたコード セグメントが 64KB を超えました。

回避方法

  1. デバッグ オプションを指定している場合は指定しないようにしてください。
  2. プロシージャ部分を別ファイルに移動させプログラムを分割してください。 コンパイル時に表示されるバイト数の意味は以下の通りです。なお、 この値が 0 の場合、コード セグメントが大きすぎてコンパイルができな かったことを意味します。
           xxx Bytes Available
           残りコンベンショナル メモリ - コンパイラが使用するメモリ
           xxx Bytes Free
           上記の値 - 中間コードを作成するのに必要なメモリ
    

L2041 stack plus data exceed 64K

リンク時のエラーです。

原因

near メモリに格納されているデータとスタックの合計が 64KB を超えて
しまいました。

回避方法

  1. スタック サイズが減るようにプログラムを調整してください。
  2. 静的配列を動的配列に変更する等、なるべくデータや near メモリを 使用しないようにしてください。

プロパティ

文書番号: 410519 - 最終更新日: 2005年8月25日 - リビジョン: 2.2
この資料は以下の製品について記述したものです。
  • Microsoft BASIC Professional Development System 7.1
  • Microsoft Visual Basic for MS-DOS
キーワード:?
basic kbinfo qb vbdos KB410519
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"
サポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com