Специальное значение для значения указателя 0x7c7c7c7c - PullRequest
2 голосов
/ 11 декабря 2008

При отладке приложения для Linux я обнаружил указатель с подозрительным значением 0x7c7c7c7c. Это конкретное значение указывает на что-нибудь?

(Я спрашиваю, потому что я знаю из своих дней MSVC, что в отладочной сборке значения, такие как 0xcdcdcdcd или 0xdddddddd, будут храниться в блоках кучи, которые были неинициализированы, освобождены или иным образом недопустимы. Некоторые люди используют магические значения, такие как 0xdeadbeef или 0xcafebabe в неинициализированная память. Я предполагаю, что что-то в libc или где-то еще использует 0x7c7c7c7c в качестве магического значения, но я не могу найти его документированным.)

Ответы [ 4 ]

4 голосов
/ 11 декабря 2008

Я не узнаю это магическое число, как и Википедия . Я предполагаю, что какой-то код в вашей программе (или в используемой вами библиотеке) использует memset() и нажимает на ваш указатель. Вы обрезали свою базу кода без учета регистра для строки "0x7c"?

2 голосов
/ 11 декабря 2008

0x7C - это ASCII-труба "|" персонаж. Вы также можете искать записи этого символа 124 и 0x7C, как предложено Адам .

1 голос
/ 11 декабря 2008

Может быть установлена ​​переменная окружения MALLOC_PERTURB_? Если установлено, это влияет на то, как malloc () инициализирует выделенную память.

1 голос
/ 11 декабря 2008

0x7c7c = 01111100 01111100 в двоичном формате. Это может быть один из тех «самых трудных для чтения» битовых шаблонов, которые утилиты форматирования заполняют неиспользуемым пространством на жестких дисках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...