首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

有关memset后free的有关问题

2012-03-17 
有关memset后free的问题在代码中我申请了一块内存: char *s_str (char *)malloc(1024) 在代码块中执行m

有关memset后free的问题
在代码中我申请了一块内存: char *s_str = (char *)malloc(1024); 在代码块中执行memset(s_str, 0, 1024),以后free(s_str); 可以顺利执行,可是在执行完memset(s_str, 0, strlen(s_str)) 后再free(s_str); 就会报断点错,请问有哪位大虾可以解释下具体原因么?

[解决办法]

探讨

引用:
strlen(s_str)不一定是1024

大于小于都可能

你的情况正好是大于


不是的,小于1024也不行!

[解决办法]
strlen返回的是分配的空间中字符串的空间
[解决办法]
strlen 返回的并非s_str大小,而是以s_str地址开始的字符串长度,由于你此时并未初始化,此字串内容随机.
[解决办法]
strlen大于1024之后置0则可能会把字符串数组后面的控制信息给覆盖了
这些信息都是在free中需要的,当然要出错了

热点排行