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