#include #include int global_non_init; int global_init = 1; int global_non_init2; int global_init2 =2; void apres_main(); int main(int argc, char **argv) { int *pointeur; int local; static int statique = 0; char *chaine = "chaine"; printf("\n"); pointeur = (int *) malloc(sizeof(int)); printf("Segment text\n"); printf("\t (main) 0x%lx et (apres main) 0x%lx\n", main, apres_main); printf("\nSegment tas\n"); printf("\n\tvariables globales intialisées\n"); printf("\t 0x%lx et 0x%lx\n", &global_init, &global_init2); printf("\n\tvariable globales non initialisées\n"); printf("\t 0x%lx et 0x%lx\n", &global_non_init, &global_non_init2); printf("\n\t 0x%lx (*pointeur) et 0x%lx (fin du tas)\n", pointeur, sbrk(0)); printf("\nSegment pile\n"); printf("\t 0x%lx (argc) et 0x%lx (argv) \n", &argc, &argv) ; printf("\t 0x%lx (local) et 0x%lx (pointeur) \n", &local, &pointeur) ; printf("\n\n\n Quel segment contient-il la chaîne d'adresse 0x%lx ?\n", chaine) ; printf("et ma variable statique d'adresse 0x%lx ?\n", &statique); // apres_main((char *)&global_init); return 0; } void apres_main(char *pt) { for(;;pt--) *pt = 0; }