C++ReadFile崩溃问题
C++ ReadFile crash issue
我得到了以下代码:
HANDLE hFile = CreateFileA(path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING, 0, NULL);
std::cout << "File Handle: " << hFile << std::endl;
DWORD fileSize = GetFileSize(hFile, NULL);
PVOID fileBuffer = VirtualAlloc(NULL, fileSize, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
if (!fileBuffer) std::cout << "Couldn't allocate memory " << GetLastError() << std::endl;
// Read the DLL
if (!ReadFile(hFile, fileBuffer, fileSize, NULL, NULL)) std::cout << "Failed to read file " << GetLastError() << std::endl;
每次调用ReadFile时,我都会在KernelBase.dll中遇到访问冲突(0xC0000005)。另外,CreateFile显示
File Handle: 0000000000000040
一直以来,我都不太确定这是否正常——一个正常的手柄。
完整代码,来自调试器的错误,VS2017
编辑:如果我打印文件大小,它显示18。
来自ReadFile:的MSDN文档
lpNumberOfBytesRead〔out,optional〕
指向变量的指针接收使用同步hFile时读取的字节数参数ReadFile在执行任何工作或错误检查。如果这是异步的,请对此参数使用NULL操作以避免潜在的错误结果此参数可以只有当lpOverlapped参数不为NULL时才为NULL。了解更多信息信息,请参阅备注部分。
试试这个:
DWORD read;
if (!ReadFile(hFile, fileBuffer, fileSize, &read, NULL)) std::cout << "Failed to read file " << GetLastError() << std::endl;
相关文章:
- 类对象数组的问题会导致崩溃
- 排序算法问题(购买商店物品)(崩溃)
- 删除数组 c++ 崩溃问题
- 运行简单的.oct文件时Octave崩溃,我的代码出了什么问题?
- 需要有关在qt c ++应用程序中使用崩溃问题的建议
- InterlockedCompareExchange Android 崩溃问题
- 在发布模式下崩溃,但如果可调试为 true - 不是..什么是可能的问题
- 是否有可能存在不会崩溃程序的内存问题
- NDK 问题:在 32 位上崩溃,在 64 位上不一致
- C++ReadFile崩溃问题
- 创建'new'实例可以解决析构函数崩溃问题?
- 这个C++代码有什么问题?它在运行时崩溃
- 简单程序没有输出和崩溃.我的解决方案有什么问题
- 我有一个 c++ 代码,它在启动时崩溃,然后到达问题所在 main() 的执行
- C++多个程序问题(rand、转换、崩溃)
- Taglib:性能和崩溃问题
- 崩溃:字符串问题
- 尝试创建队列 - C++崩溃的问题
- 崩溃,可能是由于构造函数或析构函数中的某些问题
- 在UWP应用程序中使用DataTemplate时的问题(崩溃,未设置数据)