C28197
警告 C28197: 可能遺漏記憶體
當資源可能別名至另一個位置時,這個記憶體和資源流失的警告會報告。
指標 指向已配置的記憶體或是尚未明確釋放的另一個已配置的資源。此警告通常是因為在呼叫函式中不完整的附註,不過,在呼叫函式中不完整的附註更可能造成。
如果輸入引數有 __drv_freesMem 或 __drv_aliasesMem 標記法,這項警告可能會報告函式匯出。此警告通常表示有效遺漏或目前函式所呼叫的函式需要額外的附註。
特別是,沒有基底 _In_ 和 _Out_ 附註很有可能產生這項警告,不過, __drv_aliasesMem 和 __drv_freesMem 附註也可能需要。誤報為遺漏 _In_ 附註的其中一個可能的結果。
接受指標和別名(因而避免遺漏)的函式應標註 __drv_aliasesMem。如果您建立物件並插入全域結構的函式,或將它傳遞給這麼做的系統功能,您應該將 __drv_aliasesMem 附註。
釋放記憶體的函式應標註 __drv_freesMem。釋放記憶體的主要函式已經有這個附註。
範例
下列範例程式碼會產生這則警告:
char *p = (char *)malloc(10);
test(p); // does not save a copy of p
下列程式碼範例可以避免這則警告:
char *p = (char *)malloc(10);
test(p); // does not save a copy of p
free(p);