Bonjour,
Je sais que le sujet a déjà été traité, mais j'ai des soucis de cohérence dans mes résultats depuis ce matin.
En gros, je traque les fuites mémoire. Pour celà, j'utilise le code suivant dans une méthode statique.
Pour tester mon procédé, j'ai d'abord fait un test simple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 DWORD pid = GetCurrentProcessId(); //size_type result; HANDLE hProcess; PROCESS_MEMORY_COUNTERS pmc; hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,false,pid); if (GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc))) { WorkingSetSize: result = pmc.WorkingSetSize; // memoire utilisé par le code } CloseHandle( hProcess );
La différence de mémoire mesurée (en octets donc) est originale : 4096 octets* getProcMemory
* malloc(1000*sizeof(double))
* getProcMemory
Si j'alloue 10000 double, j'ai une mémoire mesurée de 81920 ... (pas vraiment 10 fois plus)
En debug, j'ai 4096 octets de différence rien qu'en fesant
mais rien en Release (0 octets) !!* getProcMemory
* getProcMemory
Je commence a douter sérieusement de GetProcessMemoryInfo() ... ou alors je l'utilise mal...
Faut il necessairement un process séparé ?
Y a t il des restrictions ?
Comment mesurer précisément la mémoire utilisée par le processus courant par une autre méthode sinon ?
Merci de votre aide.
Ange_blond
Partager