今天有朋友问我题的时候,出现了一个迷惑情况,就是同样的代码,在我这能跑,在ta那就会崩。
之后发现是浅拷贝的相关问题,出问题的相关代码如下:
#include <iostream>
struct Node{
int data;
struct Node *next;
};
int main() {
Node * p = new Node;
Node *q = new Node ;
q = p;
free(p);
free(q);
return 0;
}
q=p应该是浅拷贝,即q与p指向的是同一块内存。
如果free(p)再执行free(q),因为q的内存已经被free了再free按理来说应该会报错。
而在朋友的电脑上执行确实会报错,在我这里就是正常结束(无error,return 0)??
求问大佬这可能是什么原因呢?