Wann und warum initialisiert ein Betriebssystem den Speicher unter malloc / free / new / delete auf 0xCD, 0xDD usw.?

Ich weiß, dass das Betriebssystem manchmal Speicher mit bestimmten Mustern wie 0xCD und 0xDD initialisiert. Was ich wissen möchte istwan undWaru das passiert

Wan

Ist dies spezifisch für den verwendeten Compiler?

Arbeiten malloc / new und free / delete diesbezüglich in gleicher Weise?

Ist es plattformspezifisch?

ritt es auf anderen Betriebssystemen wie Linux oder VxWorks au

Waru

Meines Wissens nach tritt dies nur in der Win32-Debug-Konfiguration auf und wird verwendet, um Speicherüberläufe zu erkennen und dem Compiler zu helfen, Ausnahmen abzufangen.

Können Sie praktische Beispiele geben, wie diese Initialisierung nützlich ist?

Ich erinnere mich, dass ich etwas gelesen habe (möglicherweise in Code Complete 2), dass es sinnvoll ist, den Speicher bei der Zuweisung eines bekannten Musters zu initialisieren. Bestimmte Muster lösen in Win32 Interrupts aus, die zu Ausnahmen im Debugger führen.

Wie portabel ist das?

Antworten auf die Frage(18)

Ihre Antwort auf die Frage