Адрес переменной не попадает в диапазон стека в /proc/self/mapsLinux

Ответить
Anonymous
 Адрес переменной не попадает в диапазон стека в /proc/self/maps

Сообщение Anonymous »

У меня есть очень простая программа, чтобы проверить это:

Код: Выделить всё

#include 
#include 

int main(int argc, char *argv[]) {
int ss;
int xx = system("cat /proc/self/maps | grep stack");
printf("&ss=%p\n", &ss);
return 0;
}
Я компилирую и запускаю это (в Linux, на процессоре x86_64), получаю что-то вроде этого:

Код: Выделить всё

7ffc63ee7000-7ffc63f09000 rw-p 00000000 00:00 0                          [stack]
&ss=0x7ffe3e13d8a0
Если вы посчитаете, то увидите, что 0x7ffe3e13d8a0 не попадает в диапазон 7ffc63ee7000-7ffc63f09000. Независимо от того, сколько раз я запускаю это, похоже, это так. Я не могу понять, почему.
Я уже видел аналогичный вопрос по SO: адрес локальной переменной не входит в диапазон адресов стека, показанный smaps
Предоставленные ответы мне не подходят:
  • очевидно, в этой программе нет тем.
    < li>без программирования в стиле сопрограмм, longjmp и т. д.
Буду очень признателен за любую помощь.
Просто чтобы прояснить причину, по которой мне нужно это сделать. Я пишу консервативный сборщик мусора и хочу получить диапазон стека для сканирования, получив адрес переменной в main и другой в текущей функции.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -self-maps
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»