Microsoft C (MS-C) のCランタイムエラー

MS-C Ver.4.0以前のエラー番号対応表

MS-C 4.0以前 5.0以降 メッセージ
error 2000 R6000 Stack overflow
error 2001 R6001 Null pointer assignment
error 2002 R6002 Floating-point support not loaded
error 2003 R6003 Integer divide by 0
error 2004 R6004 DOS 2.0 or later required
error 2005 R6005 Not enough memory on exec
error 2006 R6006 Bad format on exec
error 2007 R6007 Bad environment on exec
error 2008 R6008 Not enough space for arguments
error 2009 R6009 Not enough space for environment

エラー内容

C ランタイム エラー R6000 - stack overflow

プログラムが、スタック スペースを使い果たしました。これは、プログラムが大量のローカル値を使っているか、再帰が多いときに起こります。
p-code を使うと、ネイティブ コードに比べて、多くのスタック スペースを必要とします。

大きなスタックを割り当てるには、以下のような方法があります。

C ランタイム エラー R6001 - null pointer assignment

NULL セグメントの内容が、プログラムの実行中に変わりました。通常、NULL ポインタを使った不注意な割り当てのために、プログラムがこのエリアに書き込みました。
NULL セグメントは、通常は使われないローメモリ内の位置です。NULL セグメントの内容は、プログラム終了時にチェックされます。変更が見つかると、エラー メッセージが表示されます。
プログラムに NULL ポインタが含まれているだけでは、このエラーは起こりません。エラーが起こるのは、プログラムが NULL ポインタを使ってメモリに書き込みに行くときです。
このエラーを起こしたプログラムは、正常に動いているように見えても、NULL ポインタに対する参照を行なっていると、あとで問題を起こし、操作環境が変わると動かなくなることがあります。

C ランタイム エラー R6002 - floating-point support not loaded

プログラムに浮動小数点ライブラリが必要ですが、ライブラリがプログラムにリンクされていません。

次のような原因が考えられます。

C ランタイム エラー R6003 - integer divide by 0

整数をゼロで除算しようとしたために、予期しない結果になりました。

C ランタイム エラー R6005 - not enough memory on exec

生成されたプロセスをロードするためのメモリが足りません。
このエラーは、exec ライブラリ ルーチンで生成された子プロセスがエラーを起こし、オペレーティング システムが親プロセスに制御を返せなかったときに起こります。

C ランタイム エラー R6006 - invalid format on exec

exec 関数で実行されるファイルが、正しい実行可能ファイル形式ではありません。
このエラーは、exec ライブラリ ルーチンが生成した子プロセスでエラーが起き、オペレーティング システムが親プロセスに制御を返せなかったときに起こります。

C ランタイム エラー R6007 - invalid environment on exec

exec 関数の呼出しの途中で、オペレーティング システムが子プロセスにあやまった環境ブロックが与えられていることを見つけました。
このエラーは、exec ライブラリ ルーチンが生成した子プロセスでエラーが起き、オペレーティング システムが親プロセスに制御を返せなかったときに起こります。

C ランタイム エラー R6008 - not enough space for arguments

プログラムをロードするための十分なメモリはありますが、argv 配列用のメモリが足りません。

次に示すような対応策が考えられます。

C ランタイム エラー R6009 - not enough space for environment

プログラムをロードするための十分なメモリはありますが、envp 配列用のメモリが足りません。

プログラムが、コンパクト、ラージ、ヒュージのいずれかのメモリ モデルを使っているときは、LINK の /CPARM:1 コマンドライン オプションを指定することで、このエラーを回避することができます。このオプションは、near ヒープ スペースを far ヒープに割り当てないようにするためのものです。

C ランタイム エラー R6010 - abnormal program termination

abort 関数が呼び出されました。
このエラーは、abort 関数によって起こります。プログラムは、abort 関数のシグナル ハンドラが signal 関数を使って定義されていない限り、終了コード 3 で終了します。

C ランタイム エラー R6012 - illegal near-pointer use

プログラム中に、null の near ポインタが使われました。
このエラーは、ポインタ チェッキングが働いているときにだけ起こります。ポインタ チェッキングは、/Zr オプションか check_pointer プラグマで設定されます。

C ランタイム エラー R6013 - illegal far-pointer use

プログラム中に、範囲外の far ポインタが使われました。
このエラーは、ポインタ チェッキングが働いているときにだけ起こります。ポインタ チェッキングは、/Zr オプションか check_pointer プラグマで設定されます。

C ランタイム エラー R6016 - not enough space for thread data

プログラムは、_beginthread の呼出しを完了するための十分なメモリをオペレーティング システムから得られませんでした。
新しいスレッドが始まると、ライブラリはそのスレッド用に内部データベースを作らなければなりません。そのデータベースをオペレーティング システムが提供するメモリを使って拡張できないと、そのプロセスを続行できなくなります。

C ランタイム エラー R6017 - unexpected multithread lock error

プロセスが、C ランタイムのマルチスレッド ロックにアクセスしようとして、予期できないエラーが発生しました。
通常このエラーは、プロセスが不用意にランタイムのヒープ データを変更することによって起こります。また、オペレーティング システムやランタイムの内部エラーによって起きることもあります。

C ランタイム エラー R6018 - unexpected heap error

メモリ管理操作中に、予期できないエラーが発生しました。
通常このエラーは、プログラムが不用意にランタイムのヒープ データを変更することによって起こります。また、オペレーティング システムやランタイムの内部エラーによって起きることもあります。
ライブラリ内に、_heapchk および _heapwalk 関数がある場合、このエラーを診断するためにこれらの関数を使うことができます。

C ランタイム エラー R6019 - unable to open console device

プログラムは、CONIO.H で宣言されたコンソール関数を呼び出しましたが、オペレーティング システムがコンソールへのアクセスを許可しませんでした。

C ランタイム エラー R6020 - unexpected QuickWin error

プログラムに予期できない QuickWin のエラーが発生しました。

次のような原因が考えられます。

C ランタイム エラー R6021 - no main procedure

プログラムには、main プロシージャがありません。
必要なすべてのオブジェクトとライブラリ モジュールが、実行可能モジュール内にリンクされているかどうかを確認してください。

出典


inserted by FC2 system