Sto avendo perdite di memoria in un programma più grande e credo che questa sia la causa di esso.Il puntatore del char è struct array memory leak
#include <stdlib.h>
#include <Windows.h>
typedef struct _struct{
char* name;
} str;
int main() {
system("PAUSE");
str* Character = (str*)malloc(sizeof(str) * 20000);
for(int i = 0; i < 20000; i++){
Character[i].name = (char*)malloc(20000); // Assign memory.
}
for(int i = 0; i < 20000; i++){
free(Character[i].name); // Free memory.
}
free(Character);
system("PAUSE");
}
Memoria alla prima pausa: ~ 500 K.
Memoria alla seconda pausa: ~ 1,7 M.
Utilizzo di VS2012 per il test. Qualche idea?
Il tuo codice sembra corretto. Come stai misurando l'uso della memoria? È possibile che il tuo gestore di heap non abbia semplicemente compresso il suo heap seguendo le tue chiamate a 'free'? In questo caso, la memoria aggiuntiva verrebbe assegnata al tuo processo ma non sarebbe utilizzata dal tuo programma, quindi sarebbe effettivamente disponibile per altri codici da allocare. – simonc
Quando usi malloc, assicurati di verificare che la memoria sia effettivamente allocata se (Carattere == NULL) – hazzelnuttie
non devi eseguire il casting del ritorno da malloc. Questo è C e puoi assegnare un vuoto * a qualsiasi cosa. –