我一直在使用Valgrind,但是用C语言进行简单的字符串拷贝时,即使两个字符串大小相同,我仍然不断遇到内存错误。
受影响的代码如下:
node->entry = (char*)malloc(strlen(string)*sizeof(char));
strcpy(node->entry, string);
使用的字符串是:char* string = "Hello There"。 错误信息为: 写入大小无效,大小为2。
==2035== at 0xD494: memmove$VARIANT$sse42 (mc_replace_strmem.c:987)
==2035== by 0x100001793: __inline_strcpy_chk (_string.h:94)
==2035== by 0x100001699: createList (main.c:10)
==2035== by 0x100001BE6: main (main.c:132)
==2035== Address 0x10000c0fa is 10 bytes inside a block of size 11 alloc'd
==2035== at 0xB823: malloc (vg_replace_malloc.c:266)
==2035== by 0x100001635: createList (main.c:9)
==2035== by 0x100001BE6: main (main.c:132)
感谢你的帮助!
node->entry = malloc(strlen(string) + 1)
。 - Kerrek SB