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