Cercando di capire cosa rappresenta effettivamente il puntatore alla funzione? È l'indirizzo nel segmento di codice in cui risiede la funzione?Che cosa rappresenta il valore del puntatore di un puntatore a funzione?
Per esempio: questo pezzo di codice:
#include <stdio.h>
void foo(void)
{
}
int main(void)
{
int a = 10;
printf("a's address: %p\n", &a);
printf("foo's address: %p\n", foo);
return 0;
}
... stampe questo:
[sh/prog-exercises/adam]:./a.out
a's address: 0xbfffb414
foo's address: 0x8048430
Credo che io sono un po 'confuso di come impilare esattamente/mucchio di un processo si riferisce con il segmento di dati ELF/segmento di codice. Qualsiasi suggerimento utile sarebbe davvero il benvenuto. Inoltre, la mia prima domanda, quindi per favore sii gentile, sto davvero cercando di imparare. Grazie!
Giusto, quindi l'output qui rappresenta la posizione in cui questa particolare funzione è stata caricata come parte del segmento di codice? C'è un modo per un programma C per stampare il segmento dati, gli indirizzi inizio/fine segmento codice? – helpmelearn
@helpmelearn: Sì, questo è l'indirizzo in cui si trova la funzione start. Non sono a conoscenza di una soluzione per trovare gli indirizzi dei segmenti e suppongo che dipenda dall'implementazione. Forse c'è qualche programma di utilità che può fare questo per qualsiasi processo. – sharptooth