2013-08-12 13 views
9

私はC++面接の質問では、次の用語が多い参照:トラップ、エラー、失敗、プログラム中絶の違いは何ですか?

  • プログラムは
  • エラーを中止し、障害

トラップは、私ははっきりとの違いを見ることはわからないんだけどそれらの用語。誰かが明確かつ簡潔な説明を提供できますか?

編集:コンテキストの質問だった:「あなたは二回、ポインタを削除するとどうなりますか?」しかし、これらの用語の違いを知ることは、単に答えよりも私にとってより重要です。

+0

インタビューの質問は、あなたが探しているコンサイスの説明を与えるためにはっきりと見当たりません。 –

+1

これはあまりにも一般的です。あなたはサンプルの質問を提供する必要があります。たとえば、言語キーワードを '#define 'するとエラーになりますが、すべてのコンパイラでは警告なしで実行できます。また、範囲外のパラメータを関数に渡すとエラーになり、プログラムが中断する可能性があります。 –

+1

'トラップとは' - http://stackoverflow.com/questions/3149175/what-is-the-difference-between-trap-and-interruptを参照 – devnull

答えて

0

これらの用語はすべて曖昧で、特にエラーとエラーです。彼らは基本的に同じことを意味します:何かが間違っています。プログラムのアボートはおそらく、SIGABRTシグナルを発生させるCライブラリ標準abort関数を呼び出すことを指しています。これは、通常、プログラムの終了には妥当ではありませんが、プラットフォームや信号が捕捉されているかどうかに依存します。トラップはCライブラリ標準signalの機能によって制御される一般的なシグナルキャッチを指すかもしれません。

4

これは実際にC++に特有のものではありません。

  • 問題はプログラムや特定の操作を終了するときに中止されます。 Cライブラリから継承されたC++ライブラリ関数std::abortがあります。これは、外部信号によってプログラムを強制終了し、デストラクタやクリーンアップを実行しません。

  • 何か問題が発生したときにエラーが発生します。 C++では、多くの種類のエラーが必ずしも直ちに検出されるわけではありません。 C++ではの未定義の動作が指定されています。これは後で不思議な誤動作を引き起こす静かなメモリ破壊を伴います。

  • エラーは、プログラムが間違ったことをする場合です。これはかなり一般的なエンジニアリング用語です。尖った髪の上司は、おそらく顧客が本当に知っている唯一のものなので、他のものよりもこのコンセプトをよく知っているでしょう。

  • トラップは、プログラムがエラー状態を検出し、それに応じて何らかの処置をとるときです。

    だから、

あなたはネットワークがダウンした、そして、そのような「続けることができませんでした。あなたの文書が自動的に保存されている」として、ユーザーにメッセージを表示することを検出した場合に終了する前に、あなたは、エラーをトラップして中止されています、それにもかかわらず、失敗があった。

+2

トラップは、ハードウェア(MMUなど)によって検出されることがよくあります。 –

+0

@JamesKanze私はそれがかなり一般的な用語だと思う。 「私がトラップする必要のある新しい種類のエラーが見つかりました」とは、ソフトウェア分野で何か言いたいことです。 – Potatoswatter

+0

興味深い。私はそれがこのように使用されたことは聞いたことがない。 「私が捕らえなければならない新しい種類のエラーが見つかりました。しかし私の主な考えは、言語が「トラップ」表現を話すときです。ハードウェアトラップを引き起こすビットパターン(OSのトラップハンドラにプログラムを送信する) –

関連する問題