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

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

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

阅读 1.7k
1 个回答
但是完全可以不释放左侧运算对象的值,

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题