我一直在使用 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)
谢谢您的帮助!