【发布时间】:2020-06-02 03:44:34
【问题描述】:
我真的不知道如何表达标题,我想要的是从另一个重叠指针编辑一个指针中的字符串。
我想在这段代码中获得什么是1abcd abcd,但我得到的是123 abcd
#include <stdio.h>
int main() {
char* x = (char*)malloc(4);
x = "123";
char* y = (char*) x+1;
y = "abcd";
printf("%s %s",x,y);
}
【问题讨论】:
-
你为
x分配内存。然后你把那个记忆扔掉,把x指向一个字符串文字。您将y指向字符串文字中的2。然后将y指向不同的字符串文字。实际上,代码是char *x = "123";,后跟char *y = "abcd";,然后是printf。 -
所写的代码等同于
printf("%s %s", "123", "abcd");,除了在没有匹配free的malloc分配中也存在内存泄漏。 -
@user3386109 当然!我忘了使用
strcpy()。那解决了它。我现在觉得自己很笨。 -
我希望您没有更改为使用
strcpy将abcd复制到y,因为没有足够的分配内存来容纳该字符串。 -
我可能有......但它工作得很好,我是否在内存的其他地方弄乱了一些数据?