浅拷贝结构在 Xcode 上得到奇怪的结果
shallow copy struct got weird result on Xcode
这里的代码是浅拷贝的典型例子,应该在运行时得到警告,但在我的Xcode上,它运行很好,结果是
hi,hi
hi,hi
为什么?
代码:
struct pc
{
char *p;
};
int main()
{
struct pc pc1;
pc1.p = malloc(100);
strcpy(pc1.p, "hi");
struct pc pc2 = pc1; // shallow copy
printf("%s,%s\n", pc1.p, pc2.p);
free(pc1.p);
printf("%s,%s", pc1.p, pc2.p);
return 0;
}
在您 free()
d 调用 undefined behaviour.
之后访问内存
调用
后,您应该不将printf()
与free()
d内存一起使用
free(pc1.p);
这里的代码是浅拷贝的典型例子,应该在运行时得到警告,但在我的Xcode上,它运行很好,结果是
hi,hi
hi,hi
为什么?
代码:
struct pc
{
char *p;
};
int main()
{
struct pc pc1;
pc1.p = malloc(100);
strcpy(pc1.p, "hi");
struct pc pc2 = pc1; // shallow copy
printf("%s,%s\n", pc1.p, pc2.p);
free(pc1.p);
printf("%s,%s", pc1.p, pc2.p);
return 0;
}
在您 free()
d 调用 undefined behaviour.
调用
后,您应该不将printf()
与free()
d内存一起使用
free(pc1.p);