gpt4 book ai didi

c++ - 模块 'ntdll.dll' 中地址 * 的访问冲突。写地址 *

转载 作者:行者123 更新时间:2023-11-28 08:11:37 27 4
gpt4 key购买 nike

我正在编写一个函数来查找文件。

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);

我做错了什么?

最佳答案

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);

关于c++ - 模块 'ntdll.dll' 中地址 * 的访问冲突。写地址 *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8939015/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com