背景:
我有一个小例程,模仿
例程:
fgets(character, 2, fp)
的功能,只不过它从字符串中获取一个字符而不是从流中获取。 newBuff是作为参数传递的动态分配字符串,而character被声明为char character[2]
。例程:
character[0] = newBuff[0];
character[1] = '\0';
strcpy(newBuff, newBuff+1);
strcpy函数在读取每个字符时会复制信息的丢失。
问题:Valgrind警告我这种活动,“源和目标在strcpy(0x419b818, 0x419b819)中重叠”。
我应该担心这个警告吗?
strcpy
非常不安全,很可能在同一库的不同版本之间甚至不同编译器的不同构建之间发生故障。 - R.. GitHub STOP HELPING ICEstrlen(newBuff+1)+1
更好。它应该出现在你的代码中,因为它易读。它也应该在Stackoverflow上出现,以避免混淆。 - Daniel Chin