Bonjour,
Je souhaite essayer de comprendre comment la mémoire est allouée par malloc en C :
Soit le programme suivant dans le main. Normalement je devrais allouer 1024*8 octets = 8192 octets = 8 Ko
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);
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![]()
Partager