¿Intentando entender qué representa realmente el puntero a la función? ¿Es la dirección en el segmento de código donde reside la función?¿Qué representa el valor del puntero de un puntero a la función?
Por ejemplo: este pedazo de código:
#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;
}
... impresiones de esto:
[sh/prog-exercises/adam]:./a.out
a's address: 0xbfffb414
foo's address: 0x8048430
supongo que soy un poco confundido con la forma apilar exactamente/montón de un proceso se relaciona con el segmento de datos/segmento de código ELF. Cualquier sugerencia útil sería realmente bienvenida. Además, mi primera pregunta, así que por favor se amable, estoy tratando de aprender. ¡Gracias!
Correcto, ¿entonces la salida aquí representa la ubicación donde se ha cargado esta función particular como parte del segmento de código? ¿Hay alguna manera para que un programa C imprima el segmento de datos, las direcciones de comienzo/finalización del segmento de código? – helpmelearn
@helpmelearn: Sí, esa es la dirección donde se encuentra el inicio de la función. No conozco una solución para encontrar las direcciones de los segmentos y supongo que dependería de la implementación. Tal vez haya algún programa de utilidad que pueda hacer esto para cualquier proceso. – sharptooth