C28197
Upozornění C28197: Pravděpodobně nevrací paměť
Toto upozornění je vykazován nevracení paměti a prostředků v případě, že zdroj je potenciálně alias do jiného umístění.
Ukazatel přiděleny body přidělené paměti nebo na jiný prostředek, který nebyl uvolněn explicitně.Toto upozornění je obvykle z důvodu nedostatečné poznámky na volaná funkce, přestože nedostatečné poznámky o volání funkce lze také nastavit to pravděpodobnější.
Toto upozornění může být hlášena na konec funkce, pokud má vstupní argument __drv_freesMem nebo __drv_aliasesMem poznámky.Toto upozornění signalizuje obvykle platný nevracení nebo že funkce nazývá podle aktuální funkce potřebuje další poznámky.
Zejména absence základní _In_ a _Out_ poznámky proveďte tento dialog již příště velmi pravděpodobně i když __drv_aliasesMem a __drv_freesMem poznámky, které mohou být vyžadovány i.Falešně pozitivní je pravděpodobně způsobeno chybějící _In_ poznámky.
Funkcí, které přijímají ukazatel a alias jej (čímž se lze vyhnout nevracení) by měly být opatřeny poznámkou s __drv_aliasesMem.Pokud vytvoříte funkci, která vloží objekt do globální struktury nebo předá funkce systému, která tak, měli byste přidat __drv_aliasesMem poznámky.
Funkce, které uvolnit paměť by měla být komentována atributem __drv_freesMem.Hlavní funkce, které uvolnit paměť již mají tuto poznámku.
Příklad
Následující ukázka kódu generuje toto upozornění:
char *p = (char *)malloc(10);
test(p); // does not save a copy of p
Následující ukázka kódu předchází tomuto upozornění:
char *p = (char *)malloc(10);
test(p); // does not save a copy of p
free(p);