Chinaunix首页 | 论坛 | 博客
  • 博客访问: 241178
  • 博文数量: 76
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 440
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-20 14:21
文章分类

全部博文(76)

文章存档

2015年(76)

我的朋友

分类: 其他平台

2015-04-14 11:39:01

今天调试程序时出现了错误:malloc(): memory corruption: 0x09fb3da0。上网查询后说可能是内存访问越界。仔细阅读自己写的代码后发现是strlen和sprintf导致的问题。
strlen返回的长度不包括字符串末尾的'\0',而sprintf会在字符串末尾自动加上'\0'。我在动态分配内存的时候,分配了strlen()长度的内存,然后使用sprintf在分配的内存写入了字符串,由于末尾追加了'\0',因此导致越界访问了一个字节。等到再次动态分配内存的时候,就出现了上述错误。
阅读(1672) | 评论(0) | 转发(0) |
0

上一篇:OK6410---LED字符设备驱动

下一篇:FTP协议

给主人留下些什么吧!~~