Литеральные строки хранятся в разделе .data образа вашей программы при компиляции. Раздел .data обычно отображается в постоянную память, поэтому он не может быть поврежден, как и раздел .code. Вы можете просмотреть раздел .data в Windows exe / dll, используя dumpbin.exe, поставляемый с Visual Studio.
Нет простого способа испортить этот литерал, это можно сделать, если вы измените разрешения страницы памяти, в которой он хранится, но вам придется явно сделать это с помощью API-интерфейса ОС, а не API-интерфейса c ++. Адрес, жестко запрограммированный в машинном коде во время компиляции, является относительным смещением (если мне не изменяет память, то это база данных). Это смещение добавляется к базовому адресу, предоставленному загрузчиком операционной системы.
Если ваш стек поврежден, вы можете оказаться в ситуации, когда базовый адрес недействителен, поэтому при добавлении смещения литерал выглядит поврежденным.