2008-12-11 251 views
2

在調試Linux應用程序時,我發現一個指針,其值爲0x7c7c7c7c。這個特定的值是否表示任何東西我想問,因爲我知道從我的MSVC日子,在調試版本中,像0xcdcdcdcd或0xdddddddd這樣的值將被存儲到未初始化,釋放或其他無效的堆塊中。有些人使用0xdeadbeef或0xcafebabe在未初始化的內存中,我猜在libc或其他地方使用0x7c7c7c7c作爲魔法值,但我找不到它記錄。)指針值的特殊含義0x7c7c7c7c

回答

1

0x7c7c = 01111100 01111100二進制。這可能是格式化工具填充硬盤驅動器上未使用空間的那些「最難讀」位模式之一。

4

我不承認這個幻數,也沒有Wikipedia。我猜想你的程序(或者你正在使用的庫)中的一些代碼正在使用memset()並點擊你的指針。你是否對字符串「0x7c」不區分大小寫?

+0

「0x7c」是應用程序中使用的一個常量,但我沒有看到任何方式將其中的四個放在一起。 – 2008-12-11 14:47:41

2

0x7C是ASCII管道「|」字符。您可以搜索該字符的寫入以及124和0x7C,建議使用Adam

1

也許MALLOC_PERTURB_環境變量設置?如果設置,它影響malloc()如何初始化分配的內存。