自己犯了一个低级错误。留作警示。

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <stdlib.h>
#include <time.h>struct MyNode
{int num;std::vector<int> theBeg;std::vector<int> theEnd;
};void GenerateFile(std::string fileName)
{// 模拟一个有17W行数据的配置文件。std::ofstream configFile(fileName);if (configFile.is_open() == false)  return;srand((int)time(NULL));for (int i = 0; i < 170000; ++i)configFile << (rand() % 5 + 3) << std::endl;
}void ReadFile(std::string fileName)
{// 先将每一行的配置信息转化到Node中,再将Node存储起来。std::ifstream ifs(fileName, std::ios_base::in | std::ios_base::binary);if (!ifs)  return;static std::vector<MyNode> theStorage;//存储配置信息的存储器。MyNode node;//重复使用的结构体。std::string line;while (getline(ifs, line)){node.num = atoi(line.c_str());//这里错了,每次重新使用结构体时,应当先清理结构体。这里应当先对vector执行clear操作。for (int i = 0; i < node.num; ++i){node.theBeg.push_back(node.num);node.theEnd.push_back(node.num);}theStorage.push_back(node);}std::cout << theStorage.size() << std::endl;
}int main()
{std::string fileName = "D:/config.txt";GenerateFile(fileName);ReadFile(fileName);return 0;
}
//Unhandled exception at 0x74EEC41F in vc_bad_alloc.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0034EC14.
//我写了一个程序,结果出现了std::bad_alloc异常。原因找了好久,甚至怀疑到了std库了。
//结果发现,是vector内的元素个数猛增,然后耗尽了内存。
//自己犯了一个很低级的逻辑错误。我将自己犯错的代码抽离出来,形成了上面的例子。

完。

我犯了一个低级的C++的逻辑错误相关推荐

  1. 哔了沟了,今天犯了一个低级错误

    新来一个同事,总监让我指导一下他,帮他弄了一下环境,用到的软件.他之前没用过MacBook,不过我也是Mac新手,只不过比他早用了几个月而已. 给他弄了SourceTree,克隆代码后 正好现在开发任 ...

  2. js参数使用时常犯的一个低级错误

    这个小小的细节浪费了我20分钟. 为了避免今后重蹈覆辙.截图记录下来~! 转载于:https://www.cnblogs.com/missthe/archive/2008/11/28/1342933. ...

  3. 初接触php,遇到一个低级问题

    开发环境:windows7 ,mysql,php5.6,nginx 遇到的问题:我把php解压到D盘program files中,用php-cgi.exe -b 127.0.0.1:9000 -c d ...

  4. 一个低级错误引发Netty编码解码中文异常

    前言 最近在调研Netty的使用,在编写编码解码模块的时候遇到了一个中文字符串编码和解码异常的情况,后来发现是笔者犯了个低级错误.这里做一个小小的回顾. 错误重现 在设计Netty的自定义协议的时候, ...

  5. 在实现反射内存卡驱动程序DMA完成中断死机蓝屏纠结N天的一个低级BUG

    本人负责软件从应用层一直到驱动层的全部研发任务,通过对GE产品的公开的资料反复研究,一共近70个函数接口,现在都搞明白了,由于GE产品光盘手册开源了Linux和VxWorks平台的全部软件代码,唯独不 ...

  6. [转移]犯了一个很傻的错误

    [转移]犯了一个很傻的错误 转移自自己原来在YourBlog上的Blog,写于2004-3-7 20:58:54 一个很简单的ADO.Net页面,怎么都无法浏览,总是提示sa用户登陆错误,但是在IDE ...

  7. 我犯了一个错误,您能指出吗?

    这是我最近在项目中犯的一个错误,您能指出吗? 这个项目在数据访问方面使用了传统的Repository模式.为此,我定义了一个Repository基类,可以让每个不同的Repository继承它: pu ...

  8. 如何避免成为一个低级的码农?

    计算机科学与技术专业的学生要怎样做才能避免成为 一个低级的码农? 知乎上计算机的似乎很多,大神也有不少,作为一个计算机科学与技术专业的学生,真心的请教一下要怎样做,要学什么,要怎样做,才能避免那种月工 ...

  9. 使用css选择器容易犯的一个小错误

    使用css选择器容易犯的一个小错误 比如说,当我们使用scrapy框架的时候,想要利用find_element_by_css_selector()方法来找出网页中对应的部分,比如说下图所示的登陆框. ...

最新文章

  1. 和12岁小同志搞创客开发:手撕代码,点亮LED灯
  2. 《设计模式解析(第2版)》
  3. JS实现图片放大查看
  4. Android被忽略的tools
  5. Unity4.x 2D游戏开发基础教程第1章Unity及其组成的介绍
  6. 1.Hadoop初步环境搭建(ssh无密码通信)
  7. 软件常用版本英文snapshot和ga
  8. P5748-集合划分计数【EGF,多项式exp】
  9. Raspberry Pi 学习笔记之一
  10. html优化字体包,『前端开发』- 字体文件大小优化实践
  11. cmt obm odm 代工模式oem_工厂有OEM,ODM,OBM之分吧,分别是什么意思?
  12. 【UEFI实战】EDK编译和使用(更新版)
  13. 解析单总线协议(1-wire)
  14. 怎样编写精确的延时函数
  15. Django初印象之视图(view)
  16. python是所谓的爬虫吗_Python爬虫,你是否真的了解它?
  17. mysql级联删除外键约束_MySQL外键约束,级联删除
  18. java设计模式概览
  19. N6:批处理写的俄罗斯方块
  20. YY一下上网本的新变体:个人数码伴侣

热门文章

  1. 值得你我细细品味的9句话9张…
  2. 树莓派4B系统一键安装opencv,再也不要用编译安装啦!(支持buster、bullseye)
  3. Qt编写可视化大屏电子看板系统30-模块8物料管理
  4. [原创]浅谈我们应招聘应届毕业生做测试吗?
  5. 谷歌旗下专业图片编辑Snapseed获重大更新
  6. char、char*和char**区别与联系(入门级)
  7. android 寺库trytry_人民日报与寺库trytry合作 后共享时代迎新玩法
  8. 嵌入式Linux系统
  9. ifconfig eth0 down禁用网卡操作致使ssh连接不上,ping不通机器
  10. 积跬步至千里:QUIC 协议在蚂蚁集团落地之综述