2016-11-11 4 views
2

У меня есть следующая головоломка для решения, и я не совсем уверен, как это сделать. В нем написано:Головоломка. Определите, какой из адресов принадлежит глобальным/локальным/переменным кучи.

Существует программа Ubuntu Linux C, которая выводит адреса переменных.

v1: 0xa156128 
v2: 0xff97410c 
v3: 0xf750e34b 
v4: 0x804a0c0 

Я знаю, что программа не использует разделяемую память, и хотя бы одна из этих переменных является переменной кучи. Какая из этих переменных равна global/local/heap.

Это все доступная информация, и меня действительно интересуют любые идеи по решению этой головоломки.

Редактировать после прочтения комментариев:

Если я смотрю на время выполнения - ссылка хранения Организации (http://lambda.uta.edu/cse5317/notes/node33.html) там, кажется вероятным, что v2 и v3 являются локальным переменными, имеющими наибольшим адресом, v1 является переменной кучей, так как он находится между стеком и статическими данными, а v4 является глобальной переменной, которая не объявляется в стек во время выполнения, как местные, а скорее в разделе .data двоичного файла.

+0

Возможно, я ошибаюсь, но у меня есть сильное чувство, что этот вопрос не имеет смысла. –

+0

Возможно связано: http://stackoverflow.com/q/1966920/1679849 –

+0

Спасибо за ссылку @squeamishossifrage. Я редактировал свой вопрос. – WillLur

ответ

0

Попробуйте проанализировать содержимое/proc/PID/maps (см. Proc (5)). Я считаю, что это самый правильный способ определить область памяти, к которой принадлежит адрес.

 Смежные вопросы

  • Нет связанных вопросов^_^