Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Possibile perdita di memoria
Questo avviso viene segnalato sia per le perdite di memoria che per le risorse quando la risorsa è potenzialmente con alias in un'altra posizione.
Il puntatore punta alla memoria allocata o a un'altra risorsa allocata che non è stata liberata in modo esplicito. Questo avviso è in genere dovuto a annotazioni inadeguate sulla funzione chiamata, anche se le annotazioni inadeguate sulla funzione chiamante possono anche rendere più probabile questo avviso.
Questo avviso può essere segnalato all'uscita della funzione se un argomento di input ha un'annotazione __drv_freesMem
o __drv_aliasesMem
. Questo avviso indica in genere una perdita valida o che una funzione chiamata dalla funzione corrente richiede più annotazione.
In particolare, l'assenza delle annotazioni e _Out_
di base _In_
rende questo avviso abbastanza probabile, anche se le __drv_aliasesMem
annotazioni e __drv_freesMem
potrebbero essere necessarie. Un falso positivo è probabilmente il risultato di un'annotazione mancante _In_
.
Le funzioni che accettano un puntatore e lo aliasno (evitando così una perdita) devono essere annotate con __drv_aliasesMem
. Se si crea una funzione che inserisce un oggetto in una struttura globale o lo passa a una funzione di sistema che esegue questa operazione, è necessario aggiungere l'annotazione __drv_aliasesMem
.
Le funzioni che liberano memoria devono essere annotate con __drv_freesMem
. Le funzioni principali che liberano memoria hanno già questa annotazione.
Esempio
Nell'esempio riportato di seguito il codice genera questo avviso:
char *p = (char *)malloc(10);
test(p); // does not save a copy of p
Nell'esempio riportato di seguito il codice evita questo avviso:
char *p = (char *)malloc(10);
test(p); // does not save a copy of p
free(p);