У меня есть программа, которая читает набор файлов, закрывает их, а затем пытается удалить их.
Иногда (не всегда, но довольно часто) происходит сбой при ошибке «нарушение совместного доступа».
Использование монитора процессов sysinternals Я видел, что в этих случаях операция закрытия не отражалась в мониторе процесса.
Похоже, что иногда системный вызов close пропускается без видимой причины и безлюбое исключение.
Это происходит на 64-битной машине Windows 7 с использованием Visual Studio 2010.
Пример кода;
void readFile(string file)
{
ifstream stream(file);
string line;
while(getline(stream, line))
{
cout << line << endl:
}
stream.close(); // this is redundant
}
// вызывающий код:
readFile(file);
if(remove(file.c_str()) != 0)
{
cout << "file deletion failed" << endl;
}