私は現在自分のバージョンのmalloc()とfree()を実装しており、現在のデバッグ目的のために意図的にfree()の最初の行にアサート(0)を配置しています。C言語:「assert()」が失敗した後に、少しでもプログラムを実行し続けることは可能ですか?
ドライバプログラムは、これらのmalloc()とfree()のランダムなシーケンスをテストして、実装の正しさをテストしています。
しかし、私がドライバを実行すると、シェルは "Assertion '0' failed"というメッセージを表示し、もう少し長く実行し続けます。そしては "Aborted"を出力します。実際には、アサーションの失敗を報告してから最後にプログラムが中断したことを報告するまでに何度かmalloc()を呼び出すことができるようです。私はデバッグの目的で特定の変数を出力するコードに置かれている特定のprintfステートメントのためにこれを確信しています。
私はmalloc()とfree()を実装するのにまったく役に立ちません。アサーションが失敗したと報告された後でさえも、プログラムが短時間(引き続き他のユーザ定義の関数を呼び出しても)実行し続けるように見えるときに、何が意味するのかを知りたいでしょう。
私はドライバがisn ' tマルチスレッド...... –
ドライバー?あなたはどのプラットフォームにいるのかを明確にすることはできますか? –