如果一个类的成员是智能指针去管理一些资源。
那么如果这个类的对象是 new 产生的。此时如果没有正确调用 delete. 则智能指针管理的这些资源也是会发生泄漏。直到程序结束,被系统回收吗?
1
Tony042 2021-02-18 01:33:43 +08:00
我感觉是的,因为这个智能指针的引用计数始终不会被减去,所以这些资源也会泄露。
|
2
BrettD 2021-02-18 01:34:41 +08:00 via iPhone
没有析构的话不会释放
|
3
wevsty 2021-02-18 01:42:12 +08:00
是这样没错。
不过既然能用智能指针,那当然最好在类 new 的时候就要用智能指针包裹好,这样就不会漏 delete 了。 |
4
thedrwu 2021-02-18 06:52:23 +08:00 via Android
说实话,自从<iostream>不用加 .h 的那年开始,我已经不知道 new 怎么写了
|
5
jobsofchina 2021-02-18 08:36:19 +08:00 via Android
@thedrwu 请问是有什么更好的方法吗?
|
6
dinghao188 2021-02-18 09:36:24 +08:00
只要用 new 就免不了有内存泄漏,除非你特别特别特别的细心
|
7
wzzzx 2021-02-18 10:29:21 +08:00
这不是类的成员是智能指针的问题啊,是你外部的问题丫。
你在 new 这个类的时候,也要用智能指针包裹住,能不用裸指针就不要用裸指针。 |
9
alazysun 2021-02-18 12:47:36 +08:00
是的没错。
类对象也要智能指针包含,严格 RAII 处理。 |