Ошибка при использовании _chsize()

У меня есть бинарный файл "binBin", в котором хранятся парметры объектов (строка в 32 символа и 2 инта). При попытке реализовать метод удаления объекта(если он есть в файле и находится в конце), а именно при обрезке файла с помощью _chsize(), программа крашится, с бинарным файлом ничего не происходит, вылетает окно с minkernel/crts/ucrt/src/appcrt/lowio/chsize

fstream fin(fName, ios::binary | ios::in | ios::out);
        if (!fin) {
            FileIsNotOpened fino;
            throw(fino);
        }
        FILE* FBIN = fopen("binBin", "r+b");
        while (curPos != fSize) {
            
            fin.seekg(curPos, ios::beg);
            fin.read(reinterpret_cast<char*> (&cname), sizeof(cname));
            fin.read(reinterpret_cast<char*> (&_age), sizeof(_age));
            fin.read(reinterpret_cast<char*> (&_exp), sizeof(_exp));

            if ((cname == name) && (_age == age) && (_exp == exp)) {
                if (curPos == fSize - 40) {
                    fin.seekg(0, ios::beg);
                    fSize -= 40;
                    fin.close();
                    if (_chsize(_fileno(FBIN), fSize)) {}
                    break;
                }
                fSize -= 40;
                
                if (_chsize(_fileno(FBIN), fSize)) {}
            }
            fclose(FBIN);

            curPos += sizeof(cname) + sizeof(_age) + sizeof(_exp);

На стеке наткнулся на похожую проблему, но то реение мне не помогло - у меня есть все библиотеки. Более того, chsize() работает, если запись находится в начале файла.


Ответы (0 шт):