Я знаю, что если я внутри какой-то функции foo()
, которая называется где-то из bar()
, то этот адрес возврата помещается в стек.
#include <stdio.h>
void foo()
{
unsigned int x;
printf("inside foo %x\n", &x);
}
int main()
{
foo();
printf("in main\n");
return 0;
}
В вышеприведенном коде я получаю адрес первой нажатой локальной переменной в стеке, когда функция foo активна. Как я могу получить доступ к обратному адресу (main называется foo), который помещается где-то перед этой переменной в стек? Является ли это местоположение фиксированным и можно получить доступ к первой локальной переменной? Как я могу его изменить?
EDIT: Моя среда - Ubuntu 9.04 на процессоре x86 с компилятором gcc.