C++ 指针值0x7C7C7C的特殊含义

C++ 指针值0x7C7C7C的特殊含义,c++,linux,pointers,C++,Linux,Pointers,调试Linux应用程序时,我发现一个指针的可疑值为0x7C7C7C。这个特定的值表示什么吗 (我问这个问题是因为我从MSVC时代就知道,在调试构建中,0xcdcdcdcd或0xDDDD之类的值会存储到未初始化、释放或无效的堆块中。有些人在未初始化的内存中使用诸如0xdeadbeef或0xcafebabe之类的神奇值。我猜libc或其他地方会使用0x7c7c7c7c作为神奇值,但我找不到它的文档。)

调试Linux应用程序时,我发现一个指针的可疑值为0x7C7C7C。这个特定的值表示什么吗


(我问这个问题是因为我从MSVC时代就知道,在调试构建中,0xcdcdcdcd或0xDDDD之类的值会存储到未初始化、释放或无效的堆块中。有些人在未初始化的内存中使用诸如0xdeadbeef或0xcafebabe之类的神奇值。我猜libc或其他地方会使用0x7c7c7c7c作为神奇值,但我找不到它的文档。)

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

我不认识那个神奇的数字,也不认识。我猜你的程序(或你正在使用的库)中的某些代码正在使用
memset()
并点击您的指针。您是否为字符串“0x7c”不敏感地使用了代码基本大小写?

0x7c是ASCII管道“|”字符。您可以根据建议搜索该字符的写入操作124和0x7C。

可能设置了
MALLOC\u扰动
环境变量?如果设置,它会影响MALLOC()初始化分配内存的方式。

0x7C是应用程序中使用的一个常量,但我看不出有任何方式可以将其中四个放在一起。它是如何用作常量的?它是每个memset()'d或memcpy()'d吗?是否存在缓冲区溢出?该应用程序从不将任何内容设置为0x7c。它从串行端口读取传入字节,并且有一个带有“case 0x7c:”的switch语句:但是,这部分代码没有被使用,而且我知道我们没有任何用0x7c字符填充的缓冲区。有一个可能的答案…你唯一能看到0x7c值的时候就是忘记初始化指针。