bonjour,
j'ai un problème avec la libération mémoire d'un tableau 2 dimensions allouée dynamiquement.

voila mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
int main()
{
system("pause");
    int N = 10000,M=10000, i = 0, j=0;
    int** tab = NULL; // Ce pointeur va servir de tableau après l'appel du malloc
 
    tab = malloc(N * sizeof(int*)); // On alloue de la mémoire pour le tableau
    if (tab == NULL) // On vérifie si l'allocation a marché ou pas
    {
        exit(0); // On arrête tout
    }
 
    for (i = 0; i < M ; i++)
    {
        tab[i]=malloc(M * sizeof(int));
        for (j = 0; j<M;j++)
        {
            tab[i][j]=200;
        }
    }
 
 
    system("pause");
    for (i = 0; i<M; i++)
    {
        free(tab[i]);
    }
    free(tab);
 
    system("pause");
 
return 0;
}
avant la creation du tableau la memoire utilisée (via le gestionnaire des taches) est de 1244ko

apres la creation et le remplissage du tableau j'ai une memoire utilisée de 392 964ko

apres le free() je retombe à une utilisation memoire de l'application de 2840ko


Comment faire pour retomber à la valeur de départ ?

merci d'avance