Ist das Drucken eines Nullzeigers undefiniertes Verhalten?

Beim Studieren des Beispielcodes fürdiese Frage Ich hatte angenommen, dass es Undefiniertes Verhalten war, das spätere Verwendungen von verhindertestd::cout aus dem Druck. Aber es stellt sich heraus, dassEs wurde versucht, einen Nullzeiger zu druckenstd::ios_base::badbit undstd::ios_base::failbit in den Stream-Zustand versetzt werden Das war der eigentliche Grund dafür, dass es nicht betriebsbereit war. Aus diesem Grund bin ich jetzt gespannt, ob es wirklich gehtist Undefiniertes Verhalten (Versuch), einen Nullzeiger zu drucken. Also hier sind meine Fragen:

Ist es undefiniertes Verhalten, einen Nullzeiger zu drucken? Wenn ja, was ist mit dem Stream Inserter, der dies verursachen würde? Ich bin mir ziemlich sicher, dass der Inserter klug genug ist, einen Nullzeiger nicht zu dereferenzieren.

Ich würde auch gerne wissen, warum der Inserter seine Fehlermaske setzt, wenn er in diesem Zusammenhang auf einen Nullzeiger stößt (speziellbadbit). Warum wird es nicht wie die Beendigung eines String-Literal behandelt?

Ich habe kein Standard-Handy und bisher habe ich nur eine Quelle gefunden, die leider zu einem toten Link geführt hat.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage