2016-10-26 3 views
0
variableName = pointerName -> getValue(); 

getValue()には2つのルートがあり、そのうちの1つだけが戻り値(未定義)を持ちますが、まだコンパイルされているとします。このリターンのエラーをチェックしたりキャッチしたりすることがなかった場合、これがリアルタイムシナリオにあった場合はどうなりますか?それはプログラムをクラッシュさせますか?返されない関数を逆参照するとどうなりますか?

+1

誰もあなたの質問をはっきりと理解できるようにコードを投稿できますか? –

+3

未定義の動作。何でも起れる。 – drescherjm

+5

定義されていない動作の動作を説明するようお願いしていますか? – NathanOliver

答えて

0

値を返さなければならない関数の終了を「脱落」させると、その動作は未定義です。つまり、何かがになる可能性があります。未定義の動作の典型的な例:

  • プログラム(これはあなたがおそらくを期待できる最善である)すぐにクラッシュ
  • プログラムがクラッシュした後にコード
  • のいくつかの完全に無関係な部分でのプログラムは、ハードをフォーマットドライブ
  • このプログラムは、モニターに火災や爆発を引き起こします(実際は可能でした)。
  • プログラムはほとんどの場合動作しているように見えますが、たまには(通常はMD /重要なクライアント/教授にデモンストレーションする際に)、クラッシュします。
  • プログラムは、主要な顧客サイトにインストールされ、重大な負荷がかかる場合にのみクラッシュします。

未定義の動作が何をするか予測しないでください。何かが起こる可能性があります。

関連する問題