了解删除C++

Understanding delete in C++ with

本文关键字:C++ 删除 了解      更新时间:2023-10-16

我正在阅读的一本C++书中有以下代码片段。

int* operator=(const int& rhs, int *x)
{
int *tmpx=x              //line 1
x = new int(2)           //line 2 
delete tmpx;             //line 3
return x;                //line 4                   
}

我的疑问是,如果我删除第 3 行上的 tmpx,该 tmpx 保存 x 指向的内存位置的地址,并且删除将使内存地址无效,那么返回指向在第 3 行释放的内存地址的 x 会不会错?

不,没错。因为在这里您正在为x分配一个新值。

x= new int(2);           //line 2

所以现在tmpxx指向不同的地方。tmpx指向旧x.

delete tmpx;             //line 3

在这里,您正在删除tmpx,这不会影响x,现在指向新位置。

return x;                //line 4  

您返回的是new在此函数中返回的x的地址。