谁负责删除FILE_NOTIFY_INFORMATION.FileName?

时间:2019-07-10 12:16:44

标签: c++ winapi readdirectorychangesw

Winapi的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的所有示例(并非有很多示例)都没有提到删除任何内容。微软当然根本不提供任何示例。

1 个答案:

答案 0 :(得分:1)

如果您使用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);

请参阅“ Why do some structures end with an array of size 1?”。