C++ 关于赋值运算符的一个问题

图片描述当类的数据成员是动态分配的内存的时候,拷贝令一个对象需要释放左侧运算对象的值,
但是完全可以不释放左侧运算对象的值,直接令指针指向的对象的值改变了就行啊
比如类的数据成员
string *p;(左侧类的数据成员)
string *q(右侧类的数据成员)

直接改变指针指向的对象的值就可以啊
这样不是更快吗?

回答:

但是完全可以不释放左侧运算对象的值,

那样一来它指向的那边内存就再也找不到了(没有任何变量有他的地址)。这叫内存泄漏。时间长了,会用光系统内存的。

直接令指针指向的对象的值改变了就行啊

这样,就有两个对象有个这个指针。那么,析构的时候要不要释放这个指针呢?释放的话,double free 。不释放的话,谁去释放呢?没人释放,内存泄漏。

而且还会导致一个问题,一个对象被修改的时候,可能导致另一个对象的改变,因为他们共享了同一片内存。

以上是 C++ 关于赋值运算符的一个问题 的全部内容, 来源链接: utcz.com/p/193217.html

回到顶部