同样一段代码,vs2019崩掉,devcpp和CLion没崩,
浅拷贝的缺点可以用深拷贝解决,浅拷贝崩掉的原理如下
#include <iostream>
using namespace std;
int main() {
int* p1 = new int(10);
int* p2 = p1;
cout << (long long)p1 << endl << (long long)p2 << endl;
delete p1;
p1=NULL;
delete p2;
p2=NULL;
return 0;
}
等于说有两个指针指向堆区的一块内存,每次析构时都要释放该内存然后指向NULL,共释放了两次