Запись данных в файл и уведомления об ошибках CodeGuard
При записи данных в файл и его закрытии CodeGuard генерирует ошибки.
char *buffer = new char[10];
char data[] = "abcdefghij";
memcpy(&buffer[0], &data[0], 10);
//create file
ofstream myfile("d:/output.txt", std::ofstream::binary);
//write data
myfile.write(&buffer[0], 10);//at this line the CodeGuard throws an ERROR-1
delete []buffer;
myfile.close();//at this line the CodeGuard throws an ERROR-2
ОШИБКА-1: неверный параметр в процессе: Project1.exe(3916) - c:\program files (x86)\embarcadero\studio\15.0\include\dinkumware\fstream#246 Передан неверный поток файла или канала (0x320D096C) к функции. 0x0040AC80 Вызов fputc(0x61 ['a'], 0x320D096C)
ОШИБКА-2: неверный параметр в процессе: Project1.exe(3916) - c:\program files (x86)\embarcadero\studio\15.0\include\dinkumware\fstream#180 Поток плохого файла (0x320D096C) передан в функция. 0x32088358 Позвонить на [через 0x0040D030] fclose(0x320D096C)
Как это исправить?
Upd-1:
ofstream myfile("d:/output.txt", std::ofstream::binary | std::ofstream::out);
char buffer[] = "abcdefghij";
//
if(myfile.is_open())
{
myfile.write(reinterpret_cast<char*>(&buffer[0]), 11);//+1 for \0
}
myfile.close();
Но результат все тот же.
Я пытался использовать пример кода с http://www.cplusplus.com/reference/ostream/ostream/write/
И теперь CodeGuard выдает следующие ошибки:
ОШИБКА-1: Неверный параметр в процессе: Project1.exe(5908) Неверный поток файла или канала (0x3224096C) передан функции. 0x0040DE48 Позвоните в fseek(0x3224096C, 0x0 [0], 0x2 [2])
ОШИБКА-2: Неверный параметр в процессе: Project1.exe(5908) Неверный поток файла или канала (0x3224096C) передан функции. 0x0040DE48 Позвоните на fgetpos(0x3224096C, 0x0018F294)
ОШИБКА-3: неверный параметр в процессе: Project1.exe(5908) В функцию передан неверный поток файла или канала (0x3224096C). 0x0040DE48 Вызов на fsetpos(0x3224096C, 0x0018F28C)
ОШИБКА-4: неверный параметр в процессе: Project1.exe(5908) В функцию передан неверный поток файла или канала (0x3224096C). 0x0040DE48 Позвоните в fgetc(0x3224096C)
ОШИБКА-5: Неверный параметр в процессе: Project1.exe(5908) Неверный поток файла или канала (0x32240984) передан функции. 0x0040DE48 Вызов fputc(0x78 ['x'], 0x32240984)
ОШИБКА-6: Неверный параметр в процессе: Project1.exe(5908) Плохой поток файлов (0x32240984) передан функции. 0x321F832C Звоните [через 0x0041177E] fclose(0x32240984)
Я тестировал этот код на C++Builder XE7, XE8 и С++Builder 10.1 Berlin. И во всех случаях CodeGuard обнаружил эти ошибки.