Запись данных в файл и уведомления об ошибках 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 обнаружил эти ошибки.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector