最近,我正在阅读android的libc-init代码。当我阅读 malloc_debug_leak.cpp
中的代码时,第 70 行和第 263 行,它如下。
#define GUARD 0x48151642
static uint32_t MEMALIGN_GUARD = 0xA1A41520;
我知道GUARD
和MEMALIGN_GUARD
的含义,但我真的不明白值的含义,例如static uint32_t MEMALIGN_GUARD = 0x0001
可以?或任何其他值。0xA1A41520
有一些有用的信息吗?
https://i.stack.imgur.com/9lgzv.png
https://i.stack.imgur.com/ZMM5u.png
我真的不明白价值的含义
这是一个神奇的值,旨在捕获常见的编程错误。有关详细说明,请参阅此维基百科文章。
0x0001
会没事吗?
不。它缺乏"不太可能被误认为其他含义的独特独特价值"属性。
当您在某个位置内存中看到值0x1
时,该值很可能被许多不同的代码序列放置在那里。另一方面,当您看到 0xA1A41520
,不太可能(尽管仍然可能)该值是由使用 MEMALIGN_GUARD
的代码以外的代码放置在那里的。