Вероятный ответ на вопрос "использованный один раз в сравнении с более часто используемым" заключается в том, что используемые чаще всего хранятся в отдельном разделе, но использованные один раз строки хранятся с вкраплениями кода (например, после безусловной инструкции перехода / перехода). Почему вы не можете видеть строки с помощью шестнадцатеричного редактора - загадка; код операции «загрузить немедленную строку» был бы довольно необычным (это АДРЕС начала строки, который требуется передать в качестве аргумента функции), и в любом случае строка должна быть видимой. Строка, не сохраняемая на границе байта, будет крайне необычной.
Предложение: создайте небольшую тестовую программу с несколькими строками, которые использовались один раз, и несколькими строками, использованными более одного раза, и посмотрите на это с помощью (a) objdump (b) шестнадцатеричного редактора. Если у вашего компилятора есть опция отображения кода сборки, сгенерированного для каждой строки исходного кода, включите его. Повторите все вышеперечисленное для каждого уровня оптимизации, предлагаемого компилятором. Затем используйте знания, полученные на реальном файле.
Пожалуйста, учтите, что разглашение архитектуры машины и того, какой компилятор (это не государственная тайна, не так ли?) Может дать вам лучшее решение раньше и избежать возможного отрицательного ответа на ваш вопрос; -)