0xDEADBEEFしたがって、一般的なものやあまり魅力的でないもの (適切なコードの場合) を除いて、C で選択するのに適したマーカーがあるかどうか疑問に思っています0x0BADA550。
あなたのお気に入りは何ですか?特定の値または別の値を選択する理由はありますか?
ウィキペディアには、この主題に関するページ全体があります。多くの例とそれらが使用されている有名なソフトウェアを提供します。
とにかく、x86 で作業している場合は、@torak の提案に従うことを検討する必要がありますint 3。創造性を感じたら、より認識しやすくして を使用することができCC90CC90ます。int 3nop
審美的価値以上のものがあると私が考えることができる唯一のマーカーは0xCCCCCCCC. 何らかのエラーによって実行された場合は0xCC、命令に変換されINT 3ます。
これは IA-32 と x86-64 で動作します。他のアーキテクチャに相当するものがあるかどうかはわかりません。
私は常に を選択し0x80000000、0x80000001新しい領域タイプごとにインクリメントして、符号付き整数で予期しない値をくすぐりました。これらの値を使用すると、符号なしの型では奇妙に大きくなり、符号付きの型では大部分が負になり、行われた減算に対して突然正になります (それにより、同時に他のバグをテストします)。これには、オーバーフローなどのさまざまな ALU ビットが設定されるという別の優れた副作用があります。これは、-ftrapvおよびその他のコンパイラ フラグを使用して検出できます。
誰もが好みを持っています。チームの全員が異なるマーカーを使用すると、エラーの原因を特定するのに役立ちます。次のように:
「DEADBEEF? ああ、これはジョンの暗号に違いない」
0xBABECAFE、0xBADADD00、0xBADBAD00、0xFADEFADE
0xCAFEBABEは、Java のマジック ナンバーであることは理解しています。他のものよりも優れている唯一のことは、データまたは初期化されていないメモリに表示される可能性が低いことです。0x00000000したがって、またはすべての sを使用しないでくださいF。
何をマークしようとしているかによって異なります。たとえば、割り当てられているが初期化されていないメモリと割り当て解除されたメモリを区別する必要がありますか? その場合は、2 つに別のマーカーが必要です。