c++指针赋值是深拷贝还是浅拷贝
用new开辟了一个空间,让指针a1指向这个空间,然后将a1赋值给b1指针。这时候用delete删除a1,照理说开辟的空间应该被回收了,b1应该是野指针了。但是b1任然能够指向原开辟的空间,并取到空间中的数据。
指针赋值难道是浅拷贝?可是对比了指针的地址和内容,不应该出现上面说的这种情况啊。
求助大神解释一下,删除a1后,*b1的值仍然能取到3,是怎么回事。
int main()
{
int *a1 = new int(3);
cout << "a1 = " << a1 << endl;
//cout << "*a1 = " << *a1 << endl;
//cout << "&a1 = " << &a1 << endl;
//cout << "&(*a1) = " << &(*a1) << endl;
int *b1 = a1;
cout << "b1 = " << b1 << endl;
//cout << "*b1 = " << *b1 << endl;
//cout << "&b1 = " << &b1 << endl;
//cout << "&(*b1) = " << &(*b1) << endl;
delete a1;
a1 = nullptr;
cout << "*b1 = " << *b1 << endl;
return 0;
} 因为这段内存空间还没有被其他程序使用,里面的内容当然没有改变了
人造人 发表于 2021-5-8 16:19
因为这段内存空间还没有被其他程序使用,里面的内容当然没有改变了
这段内存空间被释放了,里面存储的内容不会被删除吗? 清启牧 发表于 2021-5-8 16:28
这段内存空间被释放了,里面存储的内容不会被删除吗?
怎么删除?没办法删除的
页:
[1]