今天帮一个朋友查一个错误,是运行时报vector iterator incompatible,一般这种问题是向量和迭代器的类型不兼容,或者是进行迭代器判等时前后向量的结构发生变化,如erase操作之后。但是朋友的问题比较诡异,类型正确,也没有进行erase操作,那么剩下唯一的可能性就是vector在某个地方被破坏了。下断点调试了一下,发现了一处调用memset的操作,是将一个字符数组类型的成员变量ServerName清零(和出问题的vector成员变量属于同一个类)。仔细一看,memset的length参数传的是strlen(ServerName),这就有一个问题,因为strlen的工作机制是统计遇到第一个\0结束符位置的字符数,而ServerName是个512字节的静态数组,初始化时会随机填充垃圾数据,那么遇到\0的时候很可能已经越界,因为类成员变量的内存地址是连续存放的,那么就会破坏数组后面变量。至此,问题得解,谨以此记录以备忘。

最新文章

  1. Protocol Buffers(Protobuf) 官方文档--Protobuf语言指南
  2. Oracle表与索引的分析及索引重建
  3. [转帖]MATLAB曲线绘制及颜色类型
  4. [置顶] 【C/C++学习】之十三、虚函数剖析
  5. linux中ctrl+z、ctrl+d和ctrl+c的区别
  6. Android中吐司当前电池电量
  7. Gnu Linux--Ubuntu系统清理项整理
  8. 一种利用异常机制基于MVC过滤器的防止重复提交的机制分享
  9. cpu-z如何查看电脑配置数据方法介绍
  10. ORACLE 查询某表中的某个字段的类型,是否为空,是否有默认值等
  11. 安装maven,并配置eclipse
  12. 开发中常用的es6知识
  13. iproute2学习笔记
  14. python3爬虫抓取智联招聘职位信息代码
  15. Django中间件的使用
  16. [hgoi#2019/3/21]NOIP&NOI赛后总结
  17. 20155222卢梓杰 实验五 MSF基础应用
  18. 解决EditPlus在设置了UTF-8之后,编写的HTML页面仍出现汉字乱码问题
  19. thinkphp5的Redis缓存配置
  20. [mobile]移动端页面没有重新请求时,刷新页面代码

热门文章

  1. centos关闭防火墙
  2. Ubuntu ssh服务安装
  3. 10个jQuery小技巧
  4. javascript入门:this的规则与bind的各种风骚用法
  5. python学习道路(day9note)(socketserver编程,ftp)
  6. JS笔记一
  7. BitTorrent DHT 协议中文翻译
  8. php,session验证码不一致慢半拍
  9. 数据库连接池原理 与实现(动脑学院Jack老师课后自己的练习有感)
  10. 使用jsonp跨域请求后可以获得数据,但是进入error方法,返回parseerror