Компоновщик MSVS, добавляющий данные между статическими константными строками

0

Я смотрел раздел данных в исполняемом файле, сгенерированном компоновщиком msvs 2008, и я вижу, что он вставляет какие-то маркеры между константными статическими строками:

Изображение 174551

Я посмотрел на несколько других исполняемых файлов, и я вижу тот же шаблон. Фактические значения байтов разные, но все же вставлены между строками. Я посмотрел на сгенерированный файл карты, и он не похож на меру выравнивания памяти (некоторые адреса заканчиваются на 0xc, что означает выравнивание по 4, но почему добавление так много дополняющих нулей между ними), и даже если бы это было так, зачем ценность должна быть добавлена последовательно? Какая-то охранная последовательность для обнаружения повреждения памяти или по какой-то другой причине, о которой я не знаю? Любая обратная связь будет оценена. Благодарю!

Теги:
visual-studio
linker
memory

1 ответ

1

Вы уверены, что это статические строки? Они выглядят как блоки данных RTTI для меня, причем читаемые строки являются именами типов, что предполагает, что другие байты больше относятся к типу.

  • 0
    Хорошо я думаю ты прав Найти точные строки в файле карты немного сложно из-за искажения имени, поэтому я предположил, что это были статические строки из std и boost внутренностей. Я не знаю деталей реализации RTTI в MSVS, поэтому предположил, что все эти данные поступают из реального кода, а не из компилятора, добавляющего это неявно. Еще одна причина, по которой я думал, что это из-за статичности, поскольку эти значения следовали за одним из моих постоянных статических массивов, поэтому я начал поиск.
  • 0
    Так что, если кто-то интересуется внутренними элементами реализации RTTI в VC ++, вот некоторая информация: openrce.org/articles/full_view/23 В моем случае это действительно таблицы RTTI (см. Добавленные префиксы «? AU» и «? AV»).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню