Malloc semble allouer plus de mémoire que nécessaire
Bonjour,
Je souhaite essayer de comprendre comment la mémoire est allouée par malloc en C :
Code:
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 :)