следующего короткое замыкание программы:C: адрес возврата функции (макинтош)
void foo(int a, int b) {
printf("a = %p b = %p\n", &a, &b);
}
main() {
foo(1, 2);
}
нормально, теперь я использовал GDB, чтобы просмотреть эту программу. Я получил как выход:
a = 0x7fff5fbff9ac b = 0x7fff5fbff9a8
и остановил выполнение после выхода (в foo()). Теперь я изучил 0x7fff5fbff9ac и содержание было:
1 .... правильный
затем 0x7fff5fbff9a8 и содержание:
2 ... правильно
теперь я хотел, чтобы посмотреть обратный адрес функции и исследовали (а + 4 байта) с:
х/г 0x7fff5fbff9b1 (8 байт !! адреса, поэтому "G" (гигантское слово))
и его содержание было:
(gdb) x/g 0x7fff5fbff9b1
0x7fff5fbff9b1: 0xd700007fff5fbff9
НО: ЭТО НЕ ВОЗВРАЩАЕТСЯ ДОПОЛНЕНО! где моя вина?
Что по-другому на MAC? есть ли у кого-то какие-то трудности? – 2010-12-08 17:56:13