使用ReadFile程序崩溃的原因
来源:互联网 发布:黑马程序员官网 编辑:程序博客网 时间:2024/06/05 15:04
在使用这个函数的时候,很多人都不会特意的去看MSDN文档后面的Remarks解释,所以可能有时候会出问题,而且不知道出在哪里。
这个函数的其它参数就不详细解释了,就说说lpNumberOfBytesRead这个参数。
MSDN原文:When a read operation reaches the end of a file, this function returns TRUE and sets * lpNumberOfBytesRead to zero.
这个字面上意思可能会被翻译成,当都操作到达文件尾的时候,返回TRUE,并且设置 *lpNumberOfBytesRead 这个为0。其真实情况是在本机中写代码测试运行的时候,不管你这个参数设不设置好像都没有什么问题。但是,当你将该程序放到别的电脑,或者虚拟机运行的时候,问题就会出现了(我也不知道为什么)。所以这就是这个函数崩溃的原因。引用空指针异常。
总结来说,多给它一个参数又不会死,怎么安全怎么来,不然真的是,软件做好了,到别人电脑上运行突然蹦了,然后一脸懵逼,而且代码又多,一个不知道是什么的BUG的BUG,真的很绝望,要调试很久才能慢慢的测试出来是哪里错了。所以啊,API的使用一定怎么安全怎么来!!!
下面贴出读文件的安全代码:
int ReadF(_In_ char* lpPath,_Out_ char* lpBuf, _In_ DWORD bufSize, _Out_ LPDWORD toReadSize){ HANDLE hFile = CreateFile(lpPath, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) return GetLastError(); if (!ReadFile(hFile, lpBuf, bufSize, toReadSize, NULL)) return GetLastError(); return TRUE;}
阅读全文
0 0
- 使用ReadFile程序崩溃的原因
- 如何使用MAP文件找到程序崩溃的原因
- 如何使用MAP文件找到程序崩溃的原因
- 使用MAP文件 寻找程序崩溃原因
- 导致vc程序崩溃的原因
- C程序崩溃的常见原因
- 程序崩溃原因总结
- 使用const_cast转换全局const变量导致程序崩溃的原因
- 使用readfile, getline的实现
- 使用ReadFile()时如何更改ReadFile的timeout
- VS 2005使用map文件查找程序崩溃原因
- VS 2005使用map文件查找程序崩溃原因
- VS 2005使用map文件查找程序崩溃原因
- VS2005(vs2008,vs2010)使用map文件查找程序崩溃原因
- VS 2005使用map文件查找程序崩溃原因
- VS2005(vs2008,vs2010)使用map文件查找程序崩溃原因
- VS2005使用map文件查找程序崩溃原因
- VS2005(vs2008,vs2010)使用map文件查找程序崩溃原因
- freopen头文件
- 1.3 Unity3D 的一个简单预览
- Centos7 下安装配置tomcat7
- Android高级控件系列六之ViewPager的使用
- BZOJ 3993: [SDOI2015]星际战争 二分+网络流
- 使用ReadFile程序崩溃的原因
- Flink-Table-SQL系列之source
- python函数2
- RcppArmadillo简明手册
- 实现atoi函数(string转integer)
- Java编程思想第四版课后习题--经典
- RIDE加载Selenium2Library总是显示红色的解决办法
- 排序总结
- 打劫房屋III