我正在编写一个应该找到文件的函数。
WIN32_FIND_DATAA* data;
HANDLE handle = FindFirstFile(name,data);//Access violation at address 76FC2373 in module 'ntdll.dll'. Write of address 00000008.
while(handle!= INVALID_HANDLE_VALUE)
{
FindNextFile(handle,data);
result.push_back(data->cFileName);
if(GetLastError())
break;
}
FindClose(handle);
free(data);
我做错了什么?
答案 0 :(得分:1)
FindFirstFile function需要WIN32_FIND_DATA结构的地址。你只是传递了一个不知情的指针的值。它应该是:
WIN32_FIND_DATA data;
HANDLE handle = FindFirstFile(name, &data);
请务必同时删除free(data);
行(因为堆上尚未分配data
)。
此外,您当前的循环将跳过第一个文件。你应该使用类似的东西:
do
{
if (handle == INVALID_HANDLE_VALUE) break;
result.push_back(data.cFileName);
}
while (FindNextFile(handle, &data);
答案 1 :(得分:0)