首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++,CBuilder 2010中传递参数时的ostream错误

C++,CBuilder 2010中传递参数时的ostream错误
EN

Stack Overflow用户
提问于 2011-12-25 11:26:35
回答 1查看 933关注 0票数 2

这个源代码有什么问题吗?

代码语言:javascript
复制
#include <iostream>
#include <ostream>
#include <fstream>

void printTest ( std::ostream * o )
{
    *o << "test" << std::endl;
}


int main ( int argc, char * argv[] )
{
  std::ostream * o = &std::cout;
  char ot[4096];
  strcpy ( ot, "test.txt" );
  strcat ( ot, ".log" );
  static std::ofstream of ( ot );
  printTest ( o );  //Print to console OK
  o = & of;
  printTest ( o );  //Print to file: CodeGuard stops the application with the error log
  return 0;
}

我试图在CBuilder 2010 (启用CodeGuard)下编译这个源代码。应用程序已由CodeGuard使用以下错误日志停止:

代码语言:javascript
复制
25.12.2011 13:00:57 started a CodeGuard(tm) process: Project3.exe(2244)  
Bad parameter in process: Project3.exe(2244)  - c:\program files\embarcadero\rad studio\7.0\include\../include/dinkumware/fstream#55
A bad file or pipe stream (0x32AF36D4) has been passed to the function.
0x0040A150 Call to fputc(0x74 ['t'], 0x32AF36D4)
0x004098A5 - c:\program files\embarcadero\rad studio\7.0\include\../include/dinkumware/fstream#55
0x004081BE - c:\program files\embarcadero\rad studio\7.0\include\../include/dinkumware/fstream#246
0x00407E2B - c:\program files\embarcadero\rad studio\7.0\include\../include/dinkumware/streambuf#465
0x004020AD - c:\program files\embarcadero\rad studio\7.0\include\../include/dinkumware/streambuf#151
0x00401434 - c:\program files\embarcadero\rad studio\7.0\include\../include/dinkumware/ostream#683
0x00401276 - File3.cpp#13
Pointer arithmetic underrun in process: Project3.exe(2244)  - c:\program files\embarcadero\rad studio\7.0\include\../include/dinkumware/streambuf#207
0x00892501-512, that is at offset 1-512 in heap block 0x00892500 (size 512).
0x0040985E - c:\program files\embarcadero\rad studio\7.0\include\../include/dinkumware/streambuf#207
0x00408127 - c:\program files\embarcadero\rad studio\7.0\include\../include/dinkumware/fstream#237
0x00407E2B - c:\program files\embarcadero\rad studio\7.0\include\../include/dinkumware/streambuf#465
0x004020AD - c:\program files\embarcadero\rad studio\7.0\include\../include/dinkumware/streambuf#151
0x00401434 - c:\program files\embarcadero\rad studio\7.0\include\../include/dinkumware/ostream#683
0x00401276 - File3.cpp#13
The memory block (0x008922F0) [size: 512 bytes] was allocated with calloc
0x32A9D14F
0x004057B7 - c:\program files\embarcadero\rad studio\7.0\include\dinkumware\xlocale#1289
0x00404DDA - c:\program files\embarcadero\rad studio\7.0\include\dinkumware\xlocale#1261
0x004041F1 - c:\program files\embarcadero\rad studio\7.0\include\dinkumware\xlocale#1268
0x00403395 - c:\program files\embarcadero\rad studio\7.0\include\dinkumware\xlocale#323
0x004022AB - c:\program files\embarcadero\rad studio\7.0\include\../include/dinkumware

谢谢你的帮助。

更新问题:

不幸的是,这是一个旧的和报告的bug:http://www.borlandtalk.com/is-there-a-bug-in-codeguard--vt112810.html

话题可以结束..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-25 12:36:14

尝试通过静态地针对运行时链接来构建项目。您可以通过取消选中以下选项来做到这一点:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8629384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档