我有一个已经工作了很长时间的 C++ 代码库。代码库是我最近迁移到 VS 2008 的遗留 VS 2003 项目集。迁移似乎是成功的,因为生成的程序已构建并运行。
我在新驱动器上重新安装了我的操作系统和所有应用程序,现在当我尝试在调试器中调试程序时,我在 CRT 中收到一个断言错误chsize
(真的,_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
匹配的地方filehandle
。
我认为问题可能是由于新系统上没有安装旧版本的 VS(仅限 VS 2008),因为一些第 3 方库需要 VS 8.0 可再发行版 - 即使在旧系统上似乎正在构建和运行使用 VS 2008 就好了。因此我安装了 VS 2005(不是 2003)。但是,问题仍在继续发生。
任何建议都会非常受欢迎。
*更新 - 该问题与chsize
. 请看下面我的回答。