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 管道“|” 特点。您可以按照亚当的建议搜索该字符的写入以及 124 和 0x7C 。

于 2008-12-11T14:51:23.227 回答
1

0x7c7c = 01111100 01111100 二进制。这可能是格式化实用程序填充硬盘驱动器上未使用空间的那些“最难读取”的位模式之一。

于 2008-12-11T14:39:04.717 回答
1

也许MALLOC_PERTURB_设置了环境变量?如果设置,它会影响 malloc() 如何初始化分配的内存。

于 2008-12-11T15:48:03.207 回答