C++ 关于赋值运算符的一个问题
当类的数据成员是动态分配的内存的时候,拷贝令一个对象需要释放左侧运算对象的值,
但是完全可以不释放左侧运算对象的值,直接令指针指向的对象的值改变了就行啊
比如类的数据成员
string *p;(左侧类的数据成员)
string *q(右侧类的数据成员)
直接改变指针指向的对象的值就可以啊
这样不是更快吗?
回答:
但是完全可以不释放左侧运算对象的值,
那样一来它指向的那边内存就再也找不到了(没有任何变量有他的地址)。这叫内存泄漏。时间长了,会用光系统内存的。
直接令指针指向的对象的值改变了就行啊
这样,就有两个对象有个这个指针。那么,析构的时候要不要释放这个指针呢?释放的话,double free 。不释放的话,谁去释放呢?没人释放,内存泄漏。
而且还会导致一个问题,一个对象被修改的时候,可能导致另一个对象的改变,因为他们共享了同一片内存。
以上是 C++ 关于赋值运算符的一个问题 的全部内容, 来源链接: utcz.com/p/193217.html