Существуют различные разделы памяти, в которые попадают глобальные переменные, куча, код и строковые литералы.Это зависит от используемого компилятора.
gcc создает раздел .rodata, который является разделом только для чтения, и строковые литералы хранятся там.
Visual C ++ создает раздел .rdata дляраздел только для чтения.
Вы можете использовать objdump (в linux) для проверки различных разделов вашего бинарного файла.