c++ - Access violation error using ofstream/fstream? -


i writing file, using ofstream. the writes rapid 1 thing, file closed , opened extremely frequently. below code:

if( !(is_error(wcstombs_s( (size_t*)&out, fileregnot, 1536, finalizedmessage, 1536 ))) ) {     while(reporttransferinprogress);      regfilebeingwritten = true;      if(fileregreportsent)     {         file.open("c:\\filereglog.txt", ios::out);         fileregreportsent = false;     }     else         file.open("c:\\filereglog.txt", ios::out | ios::app);      if(file.is_open() && file.good() && !file.fail() && !file.bad())     {         file<<fileregnot<<"\n";         file.close();     }      regfilebeingwritten = false; } 

the access violation occurs @ statement file.close(). program breaks , compiler jumps following code in standard fstream file (the highlighted line breaks):

enter image description here

this call stack(startrecievingnotifications name of function wrote in file being written):

enter image description here

now these states of local variables in fstream file's code segment:

enter image description here

here _myfile variable seems not point valid memory location, problem right? when go function called code i.e "file.close()" pasted in beginning, these states of local variables:

enter image description here

here _myfile variable has valid memory location , data in it. doing wrong? have used checks possibly think of before writing , closing file:

if(file.is_open() && file.good() && !file.fail() && !file.bad()) {     file<<fileregnot<<"\n";     file.close(); } 

also, error doesn't occur frequently. won't occur multiple minutes while files being continuously written , pops application executed.

this original error statement:

enter image description here

what doing wrong here?

edit: (complete function code)

dword winapi  startrecievingnotifications(     _in_ lpvoid lparg) {     handle hcomport = *((handle*)lparg);     hresult hr;     simple_message messageenvelop;     tchar processname[max_path];     wchar finalizedmessage[1536];     wchar pid[7];     int pid, out;     ofstream file;      for(;;)     {         hr = filtergetmessage(hcomport, &messageenvelop.messageheader, sizeof(simple_message), null);          if(!is_error(hr) && checkmessage(messageenvelop.message.contents))         {             for(int = 0, j = 0; messageenvelop.message.contents[i] != '\0' && < 1535; i++, j++)             {                 if(i == 0)                 {                     for(; messageenvelop.message.contents[i] != '#' && < 6; i++)                         pid[i] = messageenvelop.message.contents[i];                      pid[i] = '\0';                      pid = _wtoi(pid);                      if(getprocessname(pid, processname, true))                     {                         for(j = 0; processname[j] != '\0'; j++)                             finalizedmessage[j] = processname[j];                     }                     else                         = 0;                 }                  finalizedmessage[j] = messageenvelop.message.contents[i];                  if(messageenvelop.message.contents[i + 1] == '\0')                     finalizedmessage[j + 1] = '\0';                 }              finalizedmessage[1535] = '\0';              appendsystemtime(finalizedmessage);              if( !(is_error(wcstombs_s( (size_t*)&out, fileregnot, 1536, finalizedmessage, 1536 ))) )             {                 while(reporttransferinprogress);                  regfilebeingwritten = true;                  if(fileregreportsent)                 {                     file.open("c:\\filereglog.txt", ios::out);                     fileregreportsent = false;                 }                 else                     file.open("c:\\filereglog.txt", ios::out | ios::app);                  if(file.is_open() && file.good() && !file.fail() && !file.bad())                 {                     file<<fileregnot<<"\n";                     file.close();                 }                  regfilebeingwritten = false;             }         }     } } 


Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -