各位老大帮忙看看,为什么运行有错误,好像是访问了非法的内存地址

tankcookie 2003-12-17 12:10:56
string content = "hello world!\n";
ofstream ofs("temp.txt", ios::binary);
for (int i = 0; i < 3; ++i)
ofs.write( content.c_str(), content.length() );
ofs.close();

ifstream ifs( "temp.txt", ios::binary );
char* buf = new char();
string temp;
while (ifs.read(buf, content.length()) && !ifs.eof( ))
{

printf("%s", buf);
}
ifs.close();
delete buf;
buf = NULL;

...全文
41 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qiaojicheng 2003-12-17
楼上所说是对的,如果用char *buf = new char[48],后面删除的时候做个修改,delete []buf;这样就可以了。
  • 打赏
  • 举报
回复
arfi 2003-12-17
char* buf = new char(); 问题是不是出在这里了

你没有指定长度,而且注意下面的区别
char* buf = new char(48); //申请一个字符大小的空间,并赋予初值48
char* buf = new char[48]; //申请48个字符大小的空间
  • 打赏
  • 举报
回复
arfi 2003-12-17
char* buf = new char[content.length()+1];
buf[content.length()] = '\0';

因为length不包含结束符,读的时候也不会自动加上结束符。所以显示错误,你要是一个个字符显应该是好的,否则就像上面那样现在结尾加上结束符
  • 打赏
  • 举报
回复
tankcookie 2003-12-17
可能我的意思没有说清楚,如果程序按楼上2位说的改是没有问题,可结果有问题
  • 打赏
  • 举报
回复
相关推荐
发帖
工具平台和程序库

2.4w+

社区成员

C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
帖子事件
创建了帖子
2003-12-17 12:10
社区公告
暂无公告