【发布时间】:2017-04-30 15:18:05
【问题描述】:
好的,我已经看到了一些使用 memcpy 实现的 strcat 函数。我知道它是有效的,因为不需要分配。但是如何保留用结果字符串覆盖源字符串的内容。
例如让我们采取-:
char *str1 = "Hello";
char *str2 = "World";
str1 = strcat(str1, str2);
如何确保str2 中的内容不会被生成的“HelloWorld”字符串的内容覆盖?
此外,如果字符串只是 char 数组,并且假设数组具有固定大小,则无需重新分配内存如果我将字节复制到数组中大于数组,则不是不安全吗?
【问题讨论】:
-
一个 only 由于重叠而调用 UB 的示例可能更符合我认为您的问题的真正意义,假设你了解
strcat的工作原理(它从分配内存)。 -
你知道指针是什么吗?你知道 String Literar 是什么吗?
-
我们刚刚有一个关于在Code Review 上实施
strcat()的问题。 OP 使用了malloc(),因此对此与标准库方法进行了一些讨论。 -
@DavidBowling 是的,我想我的主要困惑是我没有意识到目标字符串中必须有足够的空间来保存连接的字符串。