Задать вопрос
@kacejot

В какую память попадает строковый литерал?

Я слышал, что литералы и константы попадают в readonly секцию памяти объектного файла при сборке. Выходит, что для выражения:

foobar("sample text");

литерал не занесется в стек?
  • Вопрос задан
  • 182 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@SolidMinus
Не занесется, верно. Будет передаваться указатель на readonly секцию:

lea eax, [Адрес]
push eax
call foobar


В некоторых случаях если передается дело в указатель оптимизатор может оптимизировать в read-write секцию. В некоторых, может. gcc точно так не делает, поэтому модифицировать строковый литерал не модифицируя права доступа - не советую :)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы