c语言 malloc 问题???
本帖最后由 bycgeek 于 2013-08-31 07:38:53 编辑 系统是linux 出错代码如下:
char *get_text_btwn(char *str, off_t start, off_t end)
{
size_t len;
char *text;
len = end - start - 1;
text = (char *)malloc(len + 1);
str += (start + 1);
strncpy(text, str, len);
text[len] = '\0';
return text;
}
==1215== Invalid write of size 1
==1215== at 0x402C36B: strcat (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==1215== by 0x8048E81: go_pack_keyword (parser.c:247)
==1215== by 0x80492DF: pack_word_struct (parser.c:300)
==1215== by 0x8049383: main (main.c:22)
==1215== Address 0x41fb0bd is 0 bytes after a block of size 5 alloc'd
==1215== at 0x402BE68: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==1215== by 0x8048C7F: get_text_btwn (parser.c:219)
==1215== by 0x8048E24: go_pack_keyword (parser.c:246)
==1215== by 0x80492DF: pack_word_struct (parser.c:300)
==1215== by 0x8049383: main (main.c:22)
==1215== Invalid write of size 1c语言 malloc 调试
==1215== at 0x402C390: strcat (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==1215== by 0x8048FBA: go_pack_keyword (parser.c:255)
==1215== by 0x80492DF: pack_word_struct (parser.c:300)
==1215== by 0x8049383: main (main.c:22)
==1215== Address 0x41fb0d2 is not stack'd, malloc'd or (recently) free'd
==1215==
[解决办法]
strcat越界了啊。
我操,这么明显的提示,楼上都在胡说啥呢。
[解决办法]