在 seekg() 上读取文件时崩溃
Crash on reading file on seekg()
我正在尝试将 bmp 文件读入字符缓冲区并使用进程间通信跨进程传输它。我使用以下代码完成了此操作:
std::ifstream ImageFile;
char* str=new char[strlen(pFilePath)+strlen(pFileName)+1];
strcpy(str,pFilePath);
strcat(str,pFileName);
ImageFile.open(str, ios::binary);
if(ImageFile.is_open()){
ImageFile.seekg(0,ios::end);
m_uiImageSize = ImageFile.tellg();
ImageFile.seekg(0,ios::beg);
m_pcImageBuffer = new char[m_uiImageSize];
ImageFile.read(m_pcImageBuffer,m_uiImageSize);
ImageFile.close();
}
WebCore::FloatRect rect;
BITMAP cBitmap;
HBITMAP hBitmap;
tagBITMAPFILEHEADER bfh = *(tagBITMAPFILEHEADER*)m_pcImageBuffer;
tagBITMAPINFOHEADER bih = *(tagBITMAPINFOHEADER*)(m_pcImageBuffer+sizeof(tagBITMAPFILEHEADER));
RGBQUAD rgb = *(RGBQUAD*)(m_pcImageBuffer+sizeof(tagBITMAPFILEHEADER)+sizeof(tagBITMAPINFOHEADER));
BITMAPINFO bi;
bi.bmiColors[0] = rgb;
bi.bmiHeader = bih;
char* pPixels = (m_pcImageBuffer+bfh.bfOffBits);
char* ppvBits;
hBitmap = CreateDIBSection(NULL, &bi, DIB_RGB_COLORS, (void**) &ppvBits, NULL, 0);
SetDIBits(NULL, hBitmap, 0, bih.biHeight, pPixels, &bi, DIB_RGB_COLORS);
GetObject(hBitmap, sizeof(BITMAP), &cBitmap);
这以前对我来说非常有效。但是现在我的程序在ImageFile.seekg(0,ios::end)崩溃了,我不知道为什么。文件打开正常,甚至 ifstream::good() 也返回 true。以下是我的调用堆栈:
StorageTree.exe!std::use_facet>(const std::locale & _Loc) Line 586 C++ msvcp110d.dll!std::basic_istream>::_Sentry_base:::_Sentry_base(std::basic_istream> & _Istr) 103行C++ msvcp110d.dll!std::basic_istream>::sentry::sentry(std::basic_istream> & _Istr, bool _Noskip) line 123 C++ msvcp110d.dll!std::basic_istream>::seekg(__int64 _Off, int _Way) 876路C++
请引导我朝着正确的方向前进。
找到了我问题的解决方案。代码中没有任何问题,我已经向应用程序添加了更多代码,并且没有初始化我的一些变量,从而影响了入口点和数据位置。
相关文章:
- Visual Studio在尝试读取resource.txt文件时崩溃
- 防止在C++中选择错误文件时提升 xml 解析器崩溃
- 逐字读取文本文件中的每一行并转换为 int(无限循环或崩溃?
- Linux 可执行文件通过 dlopen 在emplace_back崩溃打开共享库
- 为什么从文件获取图标时应用程序有时会崩溃?
- 在目标计算机上访问 POSIX 信号灯时出现可执行文件崩溃(SEGV_MAPERR)
- 当我运行MEX文件时,MATLAB崩溃
- 运行简单的.oct文件时Octave崩溃,我的代码出了什么问题?
- 如何从核心转储文件中识别导致崩溃的完整命令
- 简单的文本文件格式化在linux下崩溃,但在Windows中很好
- 用静态版本的QT编译时,文件对话框崩溃
- MEX文件实现特征库伪内函数崩溃
- 循环导致文件崩溃
- 二进制树:从文件崩溃中读取
- C++可执行文件崩溃
- 为什么我的.exe文件崩溃了,但在调试和发布版本中工作得很好
- CMake :运行 ctest 时可执行文件崩溃
- c++增强序列化如何防止不正确的文件崩溃
- 编译后的应用程序可执行文件崩溃,除非重命名.为什么
- mex文件崩溃,如何在MATLAB中使用MATLAB_MEM_MGR