1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
   | extern char _end;
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
 
        char * res;
	int tas,rupt,esp;
	printf("\n Avant toute réservation de mémoire\n --------------------------\n");
	tas=sbrk(0);
	printf("Position de fin du tas : %p\n",tas);
	rupt=&_end;
	printf("Point de rupture : %p\n",rupt);
	esp=tas-rupt;
	printf("Espace entre fin du tas et pdr : %d bytes \n",esp);
	printf("Pages allouées pour malloc %f\n",(tas-rupt-esp)/4096.0);
	printf("soit %d bytes\n",tas-rupt-esp);
 
 
 
    int nbEntier = 0, i = 0;
    int* tabEntier ; // Ce pointeur va servir de tableau après l'appel du malloc
 
    // On demande le nombre d'entiers à l'utilisateur
    printf("Combien d'entier voulez vous stockés ? ");
    scanf("%d", &nbEntier);
 
    if (nbEntier > 0) 
    {
        tabEntier = malloc(nbEntier  * sizeof(int));  
        if (tabEntier== 0) 
        {
            exit(0); // 
        }
 
        // On demande les entiers
        for (i = 0 ; i < nbEntier  ; i++)
        {
            printf("Entier n° %d ? ", i + 1);
            scanf("%d", &tabEntier[i]);
        }
 
        // On affiche les entiers un à un
        printf("\n\nVos entiers sont les suivants :\n");
        for (i = 0 ; i < nbEntier  ; i++)
        {
            printf("%d \n", tabEntier[i]);
        }
	tas=sbrk(0);
	printf("Position de fin du tas : %p\n",tas);
	rupt=&_end;
	printf("Point de rupture : %p\n",rupt);
	printf("Espace entre fin du tas et pdr : %d bytes \n",tas-rupt);
	printf("Pages allouées pour malloc %f\n",(tas-rupt-esp)/4096.0);
	printf("soit %d bytes\n",tas-rupt-esp);
 
        free(tabEntier);
 
 
        printf("\nAffichage apres free():\n");
 
        // On affiche les âges stockés un à un
        printf("\n\nVos entiers sont les suivants:\n");
        for (i = 0 ; i < nbEntier  ; i++)
        {
            printf("%d\n", tabEntier[i]);
        }
 
 
 
    }
 
    return 0;
    } | 
Partager