今天在帮忙查看一个程序出现大量core文件时,用gdb发现几乎所有的core都出现在sprintf使用附近,查看代码,显示这个函数存在迭代使用的情况,即sprintf越界后,还会在下一次迭代继续使用变量内存,导致后续有个memcpy产生core.MARK一下,在sprintf越界后会,变量处于未定义状态,一定要小心哦!最好使用snprintf或strncat拼接字符串,使用snprintf时注意n的长度应该为strlen(str) + 1,这样才可以保证snprintf能把终结符正确地加到你的str后.
阅读(2751) | 评论(0) | 转发(0) |