Freigeben über


C28197

Warnung C28197: Eventuell Speicherverlust

Diese Warnung wird für Speicher- und Ressourcenverluste gemeldet, wenn die Ressource möglicherweise an einem anderen Speicherort Alias.

Zeiger zeigt auf den reservierten Speicher oder einer anderen Ressource zugeordneten, die nicht explizit freigegeben wurde.Diese Warnung ist normalerweise aufgrund fehlender Anmerkungen auf der aufgerufenen Funktion, obwohl nicht genügend Anmerkungen auf der aufrufenden Funktion auch früher ausführen können.

Diese Warnung kann auf Funktionsbeendigung gemeldet werden, wenn ein Eingabeargument eine __drv_freesMem oder __drv_aliasesMem Anmerkung verfügt.Diese Warnung gibt in der Regel um einen gültigen Verlust oder an, dass eine Funktion, die von der aktuellen Funktion aufgerufen wird, zusätzliche Anmerkung erfordert.

Insbesondere machen das Fehlen grundlegenden _In_ und _Out_ Anmerkungen diese Warnung recht wahrscheinlich, obwohl die __drv_aliasesMem und __drv_freesMem Anmerkungen möglicherweise auch benötigt werden.Ein falsch positive Ergebnisse ist ein möglicher Ergebnis einer fehlenden _In_ Anmerkung.

Funktionen, die einen Zeiger und einen Alias es enthalten (zu Datenverlust möglichst vermeiden,) sollten mit __drv_aliasesMem gekennzeichnet werden.Wenn Sie eine Funktion erstellen, die ein Objekt in eine globale Struktur einfügt oder in eine Systemfunktion übergeben, die die vorhanden, sollten Sie die __drv_aliasesMem Anmerkung hinzufügen.

Funktionen, die Speicher freigeben, sollten mit __drv_freesMem gekennzeichnet werden.Die Hauptfunktionen, die bereits Arbeitsspeicher freigeben, haben diese Anmerkung.

Beispiel

Im folgenden Code wird diese Warnung generiert:

char *p = (char *)malloc(10);
test(p);   // does not save a copy of p

Im folgenden Codebeispiel werden diese Warnung:

char *p = (char *)malloc(10);
test(p);   // does not save a copy of p
free(p);