gpt4 book ai didi

c++ - 在 seekg() 上读取文件时崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 14:00:34 24 4
gpt4 key购买 nike

我正在尝试将 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) Line 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) Line 876  C++

请指导我正确的方向。

最佳答案

找到了我的问题的解决方案。代码没有任何问题,我向应用程序添加了更多代码并且没有初始化我的一些变量从而影响入口点和数据位置。

关于c++ - 在 seekg() 上读取文件时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19476130/

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