У меня есть база кода C ++, которая работает уже долгое время. Кодовая база представляла собой устаревший набор проектов VS 2003, который я недавно перенес на VS 2008. Миграция казалась успешной, так как полученная программа была построена и запущена.
Я переустановил свою ОС и все приложения на новый диск, и теперь, когда я пытаюсь отладить программу в отладчике, я получаю сообщение об ошибке утверждения в chsize
CRT (действительно, _chsize_s
). В частности (обрезано до самого необходимого, игнорируя проверки безопасности):
FILE * testfile = fopen("P:\\_Dan\\local\\foogoo.txt", "w");
int filehandle = fileno(testfile);
chsize(filehandle, 0);
fwrite("goohoo", 1, 6, testfile);
fclose(testfile);
Утверждение отладки происходит внутри chsize
- в частности, в файле исходного кода CRT chsize.c, в следующей строке:
_VALIDATE_CLEAR_OSSERR_RETURN_ERRCODE((_osfile(filedes) & FOPEN), EBADF);
... где filedes
совпадает с дескриптором файла
.
Я подумал, что, возможно, проблема может возникнуть из-за того, что в новой системе не установлена старая версия VS (только VS 2008), потому что некоторые Для партийных библиотек требуется распространяемая версия VS 8.0 - хотя в старой системе казалось, что все работает и работает нормально с VS 2008. Поэтому я установил VS 2005 (не 2003). Однако проблема продолжает возникать.
Любые предложения будут безмерно приветствоваться.
* Обновление - проблема не связана с chsize
. См. Мой ответ ниже.