Bonjour,
J'utilise un compilateur gcc pour DOS sous Windows XP.
Lorsque j'exécute le code suivant:
Lorsque j'appuie une première fois sur la touche Entrée, je vois bien dans le gestionnaire de tâches de Windows (onglet Performances) que 100 Mo de plus sont utilisés, ce qui est logique.
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 #include <stdio.h> #include <stdlib.h> #include <string.h> main() { char *str; getchar(); str = malloc(100000000*sizeof(char)); getchar(); free(str); str = NULL; getchar(); exit(0); }
Lorsque j'appuie une seconde fois sur la touche Entrée, malgrès que le free soit exécuté, j'ai toujours les 100 Mo d'occupés.
Ce n'est que lorsque j'appuie une troisième fois sur la touche Entrée et donc que je quitte le programme que les 100 Mo sont libérés.
Comment faire pour les libérer en cours d'exécution du programme ? car j'ai écris un programme qui fait beaucoup d'allocations/déallocations et je sature rapidement la mémoire (malloc incapable d'allouer et retournant NULL).
Merci.
Partager