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