std::ofstream 内存不断增加

zzwf1 2015-05-16 10:22:18
std::ofstream 内存不断增加


std::ofstream _out;
_out.open(_fName.data());

while(…………) //程序连续运行
{
string str="……………………";//这里会写入一段字符串
_out << str << endl;
_out.flush();
}

上面这种方式运行过程中,程序的内存不断增加,直到最后出现std::bad_alloc 错误;

如果改写为下面形式,则可以避免这个错误:


std::ofstream _out;
_out.open(_fName.data());
while(…………) //程序连续运行
{
string str="……………………";//这里会写入一段字符串
_out << str << endl;
_out.flush();
_out.close();
_out.open(_fName.data(),std::ios::app);
}

希望大神能够给出提示,谢谢!
...全文
301 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhang_int_int 2015-05-22
  • 打赏
  • 举报
回复
运行了楼主代码,不泄露
FightForProgrammer 2015-05-16
  • 打赏
  • 举报
回复
只从你这两段代码来看,区别就是多了 _out.close(); _out.open(_fName.data(),std::ios::app); 也就是关闭流之后从新打开,按照这种解释,第一种由于写入ofstream流中的数据太多导致达到某一程度用完了进程栈空间所有内存。而后者关闭流也就释放了内存重新打开,不会累积内存消耗
走好每一步 2015-05-16
  • 打赏
  • 举报
回复
上完整的代码

64,648

社区成员

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

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