Получение этой ошибки в приложении, написанном на C ++ (VS 2010):
Необработанное исключение в 0x77648da9 в файле divt.exe: 0xC0000005: Место записи нарушения доступа 0x00000014.
он указывает на эту функцию в free.c:
void __cdecl _free_base (void * pBlock)
{
int retval = 0;
if (pBlock == NULL)
return;
RTCCALLBACK(_RTC_Free_hook, (pBlock, 0));
retval = HeapFree(_crtheap, 0, pBlock);
if (retval == 0) //<-----------------------right here
{
errno = _get_errno_from_oserr(GetLastError());
}
}
С помощью отладки я смог определить, где на самом деле происходит сбой:
void MenuState::LoadContentFromFile(char* File,std::string &Content)
{
std::string strbuf;
char buffer[1028];
std::fstream file;
file.open(File,std::ios_base::in);
if(file.fail())
{
Content = ErrorTable->GetString("W0001");
return;
}
if(file.is_open())
{
while(!file.eof())
{
file.getline(buffer,128,'\n'); // <----here
strbuf = buffer;
Content += strbuf + "\n";
}
}
file.close();
strbuf.clear();
}
Сбой в файле .getline (buffer, 128, '\ n');
Я не понимаю, почему, но он делает это только при сборке релиза (оптимизация выключена), при отладке он работает нормально.
Есть идеи?