浅拷贝结构在 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);