Кто несет ответственность за удаление FILE_NOTIFY_INFORMATION.FileName? - PullRequest
0 голосов
/ 10 июля 2019

Winapi's ReadDirectoryChanges использует FILE_NOTIFY_INFORMATION для представления своих результатов.Структура выглядит следующим образом:

typedef struct _FILE_NOTIFY_INFORMATION {
  DWORD NextEntryOffset;
  DWORD Action;
  DWORD FileNameLength;
  WCHAR FileName[1];
} FILE_NOTIFY_INFORMATION, *PFILE_NOTIFY_INFORMATION;

Если я заполнил эту структуру winapi, как мне правильно удалить FileName WCHAR*?Должен ли я удалить его?

Ни один из примеров (не так много примеров) из ReadDirectoryChanges не упоминает удаление чего-либо.Microsoft, конечно, не приводит никаких примеров.

1 Ответ

1 голос
/ 11 июля 2019

Если вы используете malloc, вам нужно позвонить free после того, как вы закончите использовать объект.

Например:

DWORD FileNameLength = 100;
PFILE_NOTIFY_INFORMATION file_notify_info = (PFILE_NOTIFY_INFORMATION)malloc(FIELD_OFFSET(FILE_NOTIFY_INFORMATION, FileName[FileNameLength]));

free(file_notify_info);

См. " Почему некоторые структуры заканчиваются массивом размера 1? ".

...