如果一个类的成员是智能指针去管理一些资源。
那么如果这个类的对象是 new 产生的。此时如果没有正确调用 delete. 则智能指针管理的这些资源也是会发生泄漏。直到程序结束,被系统回收吗?
如果一个类的成员是智能指针去管理一些资源。
那么如果这个类的对象是 new 产生的。此时如果没有正确调用 delete. 则智能指针管理的这些资源也是会发生泄漏。直到程序结束,被系统回收吗?
|
Tony042Feb 18, 2021
1
我感觉是的,因为这个智能指针的引用计数始终不会被减去,所以这些资源也会泄露。
|
|
BrettDFeb 18, 2021 via iPhone
2
没有析构的话不会释放
|
|
wevstyFeb 18, 2021
3
是这样没错。
不过既然能用智能指针,那当然最好在类 new 的时候就要用智能指针包裹好,这样就不会漏 delete 了。 |
|
thedrwuFeb 18, 2021 via Android
4
说实话,自从<iostream>不用加 .h 的那年开始,我已经不知道 new 怎么写了
|
|
jobsofchinaFeb 18, 2021 via Android
5
@thedrwu 请问是有什么更好的方法吗?
|
|
dinghao188Feb 18, 2021
6
只要用 new 就免不了有内存泄漏,除非你特别特别特别的细心
|
|
J55s5Feb 18, 2021
7
这不是类的成员是智能指针的问题啊,是你外部的问题丫。
你在 new 这个类的时候,也要用智能指针包裹住,能不用裸指针就不要用裸指针。 |
|
alazysunFeb 18, 2021
9
是的没错。
类对象也要智能指针包含,严格 RAII 处理。 |