Vous essayez de comprendre ce que le pointeur de la fonction représente réellement? Est-ce l'adresse dans le segment de code où réside la fonction?Que représente la valeur du pointeur d'un pointeur de fonction?
Ex: ce morceau de code:
#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;
}
... imprime ceci:
[sh/prog-exercises/adam]:./a.out
a's address: 0xbfffb414
foo's address: 0x8048430
Je suppose que je suis un peu confus avec la façon dont la pile exactement/tas d'un processus raconte avec le segment de données/segment de code ELF. Tout pointeur utile serait vraiment le bienvenu. Aussi, ma première question, alors s'il vous plaît soyez doux, j'essaie vraiment d'apprendre. Merci!
Droit, de sorte que la sortie ici représente l'emplacement où cette fonction particulière a été chargée dans le cadre du segment de code? Existe-t-il un moyen pour un programme C d'imprimer le segment de données, les segments de début/fin de segment de code? – helpmelearn
@helpmelearn: Oui, c'est l'adresse où se trouve la fonction start. Je ne suis pas au courant d'une solution pour trouver les adresses de segments et je suppose que cela dépendrait de l'implémentation. Peut-être y at-il un programme d'utilité qui peut le faire pour n'importe quel processus. – sharptooth