現在オフラインです。再接続するためにインターネットの接続を待っています

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

この記事は、以前は次の 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 - 最終更新日: 08/25/2005 15:24:31 - リビジョン: 2.2

Microsoft BASIC Professional Development System 7.1, Microsoft Visual Basic for MS-DOS

  • basic kbinfo qb vbdos KB410519
フィードバック
rClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write("