std::cout 出力の不可解な消失は、異常な原因、つまりパスに遡ることができます。関数への null ポインタ。提供されているコード スニペットは、この動作を示しています。
const char* some_string = a_function_that_returns_null(); if (some_string == 0) std::cout << "Let's check the value of some_string: " << some_string << std::endl;
このスニペットでは、a_function_that_returns_null() 関数が 0 で表される null ポインタを返す場合、std::cout の動作が変わります。条件ステートメントの後を含む、std::cout への後続の呼び出しでは、出力は生成されません。
この動作の原因は、演算子<<の定義にあります。 null ポインタ用の関数。 C 標準によれば、演算子
この未定義の動作は、さまざまな形で現れる可能性があります。場合によっては、プログラムのクラッシュやセグメンテーション違反が発生する可能性があります。ただし、他の場合には、std::cout 出力が消えるなど、予期しない動作が発生する可能性があります。
したがって、このような問題を回避するには、有効な文字列またはポインタが確実に渡されるようにすることが重要です。 std::cout。空の文字列を null ポインターの代わりに使用して、空の値を表すことができます。さらに、C スタイルの文字列の代わりに std::string を使用すると、この種のエラーを防ぐのに役立ちます。
以上がNull ポインターが渡された後、std::cout が出力を停止するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。