c++ - 谁负责删除 FILE_NOTIFY_INFORMATION.FileName?
问题描述
WinapiReadDirectoryChanges
用于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 当然根本没有提供任何示例。
解决方案
例如:
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 的数组结尾? ”。