2

Linux アプリのデバッグ中に、疑わしい値 0x7c7c7c7c を持つポインターを見つけました。その特定の値は何かを示していますか?

(MSVC 時代から、デバッグ ビルドでは、0xcdcdcdcd や 0xdddddddd などの値が、初期化されていない、解放された、または無効なヒープ ブロックに格納されることを知っているので、質問します。初期化されていないメモリで 0xdeadbeef や 0xcafebabe などの魔法の値を使用する人もいます。 libc などの何かが 0x7c7c7c7c をマジック値として使用していると推測していますが、文書化されていません。)

4

4 に答える 4

4

私はその魔法の数を認識しませんし、ウィキペディアも認識しません。あなたのプログラム (または使用しているライブラリ) 内の一部のコードがmemset()、ポインターを使用してヒットしていると思います。文字列「0x7c」について、大文字と小文字を区別せずにコードベースを grep しましたか?

于 2008-12-11T14:42:21.233 に答える
2

0x7C は ASCII パイプ「|」です。キャラクター。Adamが提案したように、124 および 0x7C と同様にその文字の書き込みを検索できます。

于 2008-12-11T14:51:23.227 に答える
1

たぶんMALLOC_PERTURB_環境変数が設定されていますか?設定されている場合、malloc()が割り当てられたメモリを初期化する方法に影響します。

于 2008-12-11T15:48:03.207 に答える
1

0x7c7c = 01111100 01111100 (バイナリ)。これは、フォーマット ユーティリティがハード ドライブの未使用領域を埋める「最も読みにくい」ビット パターンの 1 つになる可能性があります。

于 2008-12-11T14:39:04.717 に答える