2 Stimmen

Besondere Bedeutung für Zeigerwert 0x7c7c7c7c

Beim Debuggen einer Linux-Anwendung fand ich einen Zeiger mit dem verdächtigen Wert 0x7c7c7c7c. Hat dieser Wert irgendeine Bedeutung?

(Ich frage, weil ich aus meiner MSVC-Zeit weiß, dass in einem Debug-Build Werte wie 0xcdcdcdcd oder 0xdddddddd in Heap-Blöcken gespeichert werden, die nicht initialisiert, freigegeben oder anderweitig ungültig sind. Manche Leute verwenden magische Werte wie 0xdeadbeef oder 0xcafebabe in nicht initialisiertem Speicher. Ich vermute, dass irgendetwas in libc oder anderswo 0x7c7c7c7c als magischen Wert verwendet, aber ich kann es nicht dokumentiert finden).

4voto

Adam Rosenfield Punkte 373807

Ich kenne diese magische Zahl nicht, und ich kenne sie auch nicht. Wikipedia . Ich würde vermuten, dass irgendein Code in Ihrem Programm (oder in einer von Ihnen verwendeten Bibliothek) die memset() und drücken Sie Ihren Zeiger. Haben Sie Ihre Codebasis case-insensitiv nach der Zeichenfolge "0x7c" durchsucht?

2voto

Judge Maygarden Punkte 25975

0x7C ist ein ASCII-Pipe "|" Zeichen. Sie können auch nach Schreibzugriffen auf dieses Zeichen suchen 124 und 0x7C als Adam vorgeschlagen.

1voto

James Curran Punkte 98228

0x7c7c = 01111100 01111100 im Binärformat. Das könnte eines der "am schwierigsten zu lesenden" Bitmuster sein, mit denen Formatierungsprogramme ungenutzten Platz auf Festplatten füllen.

1voto

oliver Punkte 5771

Vielleicht ist die MALLOC_PERTURB_ Umgebungsvariable gesetzt ist? Wenn sie gesetzt ist, beeinflusst sie, wie malloc() den zugewiesenen Speicher initialisiert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X