dirent.h头文件中的_wopendir和_wreaddir在XP和vs2010中有
FindFirstFileW和FindNextFileW在unicode编译环境下发生堆破坏的问题
可能解决办法有:
1、
struct _WDIR {
struct _wdirent ent; /* Current directory entry */
WIN32_FIND_DATAW find_data; /* Private file data */
int cached; /* True if data is valid */
HANDLE handle; /* Win32 search handle */
wchar_t patt[PATH_MAX+1]; 将原先的指针设为数组
};
2、
typedef struct _WIN32_FIND_DATAW {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
WCHAR cFileName[ MAX_PATH ];
WCHAR cAlternateFileName[ 14 ]; //将此处的值改大,比如140
#ifdef _MAC
DWORD dwFileType;
DWORD dwCreatorType;
WORD wFinderFlags;
#endif
} WIN32_FIND_DATAW, *PWIN32_FIND_DATAW, *LPWIN32_FIND_DATAW;
本人经过测试解决了堆破坏的问题。