Недавно я читаю код libc-init для Android. Когда я читаю код в 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
есть полезная информация?
Я действительно не понимаю значения
Это волшебная ценность, предназначенная для выявления распространенных ошибок программирования. Увидеть эта статья в википедии для подробного объяснения.
Было бы
0x0001
будет хорошо?
Нет. В нем отсутствует свойство «отличительная уникальная ценность, которую вряд ли можно принять за другие значения».
Когда вы видите значение 0x1
в определенном месте памяти такое значение, скорее всего, может быть размещено множеством различных кодовых последовательностей. С другой стороны, когда вы видите 0xA1A41520
, весьма маловероятно (хотя все еще возможно), что это значение было помещено туда кодом, отличным от того, который использует MEMALIGN_GUARD
,