2013-10-20 2 views
1

bmp 파일을 문자 버퍼로 읽어 들이고 프로세스 간 통신을 사용하여 프로세스간에 전송하려고합니다. 다음 코드를 사용하여이 작업을 수행했습니다.seekg에서 파일을 읽는 중 충돌이 발생했습니다.

 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++ 

Pls가 올바른 방향으로 안내합니다.

답변

0

내 문제의 해결책을 찾았습니다. 코드에 아무런 문제가 없었습니다. 앱에 코드를 더 추가하고 일부 변수를 초기화하지 않아 진입 점과 데이터 위치에 영향을 미치지 않았습니다.

+0

좀 더 구체적으로 기재 할 수 있습니까? seekg() 또는 getline() 또는 "액세스 위반"을 일으키는 것과 같은 문제가 발생합니다. 파일이 열려 유효합니다. –

관련 문제