当类的数据成员是动态分配的内存的时候,拷贝令一个对象需要释放左侧运算对象的值,
但是完全可以不释放左侧运算对象的值,直接令指针指向的对象的值改变了就行啊
比如类的数据成员
string *p;(左侧类的数据成员)
string *q(右侧类的数据成员)
直接改变指针指向的对象的值就可以啊
这样不是更快吗?
当类的数据成员是动态分配的内存的时候,拷贝令一个对象需要释放左侧运算对象的值,
但是完全可以不释放左侧运算对象的值,直接令指针指向的对象的值改变了就行啊
比如类的数据成员
string *p;(左侧类的数据成员)
string *q(右侧类的数据成员)
直接改变指针指向的对象的值就可以啊
这样不是更快吗?
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
那样一来它指向的那边内存就再也找不到了(没有任何变量有他的地址)。这叫内存泄漏。时间长了,会用光系统内存的。
这样,就有两个对象有个这个指针。那么,析构的时候要不要释放这个指针呢?释放的话,double free 。不释放的话,谁去释放呢?没人释放,内存泄漏。
而且还会导致一个问题,一个对象被修改的时候,可能导致另一个对象的改变,因为他们共享了同一片内存。