Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Möglicherweise wird speicherleckt
Diese Warnung wird für Speicher- und Ressourcenlecks gemeldet, wenn die Ressource potenziell an einen anderen Speicherort aliast wird.
Der Zeiger verweist auf den zugewiesenen Speicher oder auf eine andere zugeordnete Ressource, die nicht explizit freigegeben wurde. Diese Warnung ist in der Regel auf unzureichende Anmerkungen für die aufgerufene Funktion zurückzuführen, obwohl unzureichende Anmerkungen zu der aufrufenden Funktion diese Warnung wahrscheinlicher machen können.
Diese Warnung kann beim Beenden der Funktion gemeldet werden, wenn ein Eingabeargument eine __drv_freesMem Anmerkung hat __drv_aliasesMem . Diese Warnung gibt in der Regel an, dass entweder ein gültiger Verlust oder eine Funktion, die von der aktuellen Funktion aufgerufen wird, eine weitere Anmerkung benötigt.
Insbesondere das Fehlen der Grundlegenden _In_ und _Out_ Anmerkungen machen diese Warnung ziemlich wahrscheinlich, obwohl auch die __drv_aliasesMem Anmerkungen und __drv_freesMem Anmerkungen erforderlich sind. Ein falsch positives Ergebnis ist ein wahrscheinliches Ergebnis einer fehlenden _In_ Anmerkung.
Funktionen, die einen Zeiger verwenden und ihn aliasen (wodurch ein Leck vermieden wird) sollten mit __drv_aliasesMemAnmerkungen versehen werden. Wenn Sie eine Funktion erstellen, die ein Objekt in eine globale Struktur einfügt oder an eine Systemfunktion übergibt, die dies tut, sollten Sie die __drv_aliasesMem Anmerkung hinzufügen.
Funktionen, die Arbeitsspeicher freigeben, sollten mit __drv_freesMemAnmerkungen versehen werden. Die wichtigsten Funktionen, die Arbeitsspeicher freigeben, verfügen bereits über diese Anmerkung.
Beispiel
Im folgenden Codebeispiel wird diese Warnung generiert:
char *p = (char *)malloc(10);
test(p); // does not save a copy of p
Im folgenden Codebeispiel wird diese Warnung vermieden:
char *p = (char *)malloc(10);
test(p); // does not save a copy of p
free(p);