Sdílet prostřednictvím


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);