有关memset后free的有关问题

有关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中需要的,当然要出错了