Ошибка утверждения в CRT, вызывающей _osfile () в VS 2008?

У меня есть база кода 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 . См. Мой ответ ниже.

5
задан Dan Nissenbaum 15 May 2011 в 19:27
поделиться