Bonjour,

Je souhaite essayer de comprendre comment la mémoire est allouée par malloc en C :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
int c;
    system("pause");
    for(c=0; c<1024; c++)
    {
        char* tmp = malloc(8);
        //char* tmp = calloc(8, sizeof(char));
        //printf("%d\n", _msize(tmp));
        tmp[0] = '\0';
    }
    system("pause");
    exit(-1);
Soit le programme suivant dans le main. Normalement je devrais allouer 1024*8 octets = 8192 octets = 8 Ko
Or dans le gestionnaire de mémoire de Windows 7, mon programme alloue 16 Ko de mémoire entre mes deux system("pause").

J'ai d'abord pensé aux alignements mémoire mais 8 étant un multiple de 8, normalement, il ne devrait pas y avoir d'alignement.

Je voudrais comprendre pourquoi j'ai deux fois plus de mémoire allouée sachant que j'ai besoin d'optimiser la mémoire de mon programme.

PS : J'ai testé aussi avec 45 000 000 d'itérations dans la boucle for, même problème, j'ai deux fois plus de mémoire allouée au final.

Merci d'avance