共用方式為


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