Почему файл readfile API windows не получает нужного размера
<pre>DWORD errorNo = 0; template <typename TYPE> bool read(HANDLE hPipe,TYPE &data) { DWORD size=sizeof(TYPE),dwBytesRead=0; bool ret=ReadFile(hPipe,&data,size,&dwBytesRead,NULL); errorNo = GetLastError(); return ret; } bool readString(HANDLE hPipe,string &str) { DWORD size,dwBytesRead=0; char *c; bool ret=read(hPipe,(int &)size); if(ret&&size>0 ) { c=new char[size+1]; ret=ReadFile(hPipe,c,size,&dwBytesRead,NULL); //throw 0xC0000005 c[size]='\0'; str= string(c); } return ret; }
функция ReadFile бросает ошибку 0xC0000005, потому что функция read не может получить правильный размер,в большинстве случаев правильный размер может быть получен. Когда программа запускается сотни тысяч раз, иногда происходит сбой, чтобы получить правильный размер и вызвать ошибки.
как решить этот вопрос
Что я уже пробовал:
используйте GetLastError (), чтобы получить номер ошибки, но это число равно нулю.