求助 在Release模式下编译出来的程序出现了错误

visualvisual 2008-11-26 02:48:42
我的程序中有这样的一段代码:
ifstream ifile(FileName, ios::binary);
ifile.seekg(0,ios:end);
UINT FileLen = ifile.tellg();
char* Buffer=new char[FileLen];

在Debug模式下调试不会出现错误FileLen的值为15090,但是生成Release版本后执行就会弹出一个对话框,内容如下:
Invalid allocation size: 4294967295 byts.
(press Retry to debug the application)

这是怎么回事?

谢谢!
...全文
171 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
visualvisual 2008-11-26
  • 打赏
  • 举报
回复
在release中如果我直接输入MultiByte就不会出现这样的错误,但是如果输入WideChar然后用WideCharToMultiByte()转换成MultiByte再打开文件,那文件打开就失败了。
visualvisual 2008-11-26
  • 打赏
  • 举报
回复
szFileName是存在的因为在debug下是正确的。debug下运行结束后我没有更改任何代码然后运行release的,这时出错了。
spofmy 2008-11-26
  • 打赏
  • 举报
回复
帮顶
hhyttppd 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 visualvisual 的回复:]
在release下难道不能使用
DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,szFileName,-1,NULL,0,NULL,FALSE);
WideCharToMultiByte (CP_OEMCP,NULL,szFileName,-1,pPath,dwNum,NULL,FALSE);

[/Quote]
当然可以这么用。

你需要检查一个szFileName是否存在。
is_open


visualvisual 2008-11-26
  • 打赏
  • 举报
回复
在release下难道不能使用
DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,szFileName,-1,NULL,0,NULL,FALSE);
WideCharToMultiByte (CP_OEMCP,NULL,szFileName,-1,pPath,dwNum,NULL,FALSE);
hhyttppd 2008-11-26
  • 打赏
  • 举报
回复
好像FileLen = -1;
呵呵,估计你的文件在release中丢了。看看是不是路径问题。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧