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.

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 );
Pour tester mon procédé, j'ai d'abord fait un test simple :
* getProcMemory
* malloc(1000*sizeof(double))
* getProcMemory
La différence de mémoire mesurée (en octets donc) est originale : 4096 octets
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
* getProcMemory
* getProcMemory
mais rien en Release (0 octets) !!

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