2008-12-11 46 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()如何初始化分配的内存。