由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 琢磨了一下c++ smart pointer,发现不能到处用
相关主题
C++的smart pointer注定是个二流的东西一个Quant Developer的C++面试题
什么时候使用c++ smart pointer?C++的很多library到底是趋于集中,还是各个公司独自开发,各立山头
不如各位高手挑个专题讲讲C++11吧大家要学习C++11啊, 我觉得C++11很多FEATURE,绝对不输JAVA.
c++ 里用到pointer 的地方我们尽可能用smart pointer吗?怎么准备一些hardcore C++的interview (转载)
c++指针的问题is smart_ptr really that good?
c++里 weak_ptr用起来是不是耗时间?int F::*x = &F::x是什么意思?
出个题考考大家:)shared_ptr处理stack上面的指针
简单的c code问题smart pointer 一问
相关话题的讨论汇总
话题: pointer话题: ptr话题: object话题: smart话题: c++
进入Programming版参与讨论
1 (共1页)
N******K
发帖数: 10202
1
把所有raw pointer替换为 shared_ptr or weak_ptr 等等 是sb行为
函数的传入传出指针都用raw pointer就行 只要保证这个函数内部没有内存泄露就可
以 函数内部可以用shared_ptr 或者 unique_ptr
例外就是 类的成员变量 如果是其他类的指针 就得用shared_ptr 或者weak_ptr 当用
函数初始化这些成员变量时,函数输入要是 smart pointer
C++ 自动内存管理 靠的就是 函数返回时 清空stack 或者 {}结束 清空局部变量
模仿GC来用smart pointer是行为艺术
N******K
发帖数: 10202
2
另外 std::shared_ptr等比 intrusive smart pointer好 因为对每一个object 有一个
manager object 然后所有指针都指向 manager object
如果 object被干掉了 可以从manager object判断出来
如果多个raw指针指向一个object。 当这个object被干掉 这些 raw指针都指向垃圾
如果多个shared_ptr/weak_ptr指针通过manager object指向一个object, 当object被
干掉 这些 weak_ptr通过manager object指向Null pointer
如果每一个object都有一个指向自己的weak_ptr为成员变量 那就跟好了

【在 N******K 的大作中提到】
: 把所有raw pointer替换为 shared_ptr or weak_ptr 等等 是sb行为
: 函数的传入传出指针都用raw pointer就行 只要保证这个函数内部没有内存泄露就可
: 以 函数内部可以用shared_ptr 或者 unique_ptr
: 例外就是 类的成员变量 如果是其他类的指针 就得用shared_ptr 或者weak_ptr 当用
: 函数初始化这些成员变量时,函数输入要是 smart pointer
: C++ 自动内存管理 靠的就是 函数返回时 清空stack 或者 {}结束 清空局部变量
: 模仿GC来用smart pointer是行为艺术

t****t
发帖数: 6806
3
早就说过C++ 的smart pointer跟GC没啥关系, 就是RAII而已.

【在 N******K 的大作中提到】
: 把所有raw pointer替换为 shared_ptr or weak_ptr 等等 是sb行为
: 函数的传入传出指针都用raw pointer就行 只要保证这个函数内部没有内存泄露就可
: 以 函数内部可以用shared_ptr 或者 unique_ptr
: 例外就是 类的成员变量 如果是其他类的指针 就得用shared_ptr 或者weak_ptr 当用
: 函数初始化这些成员变量时,函数输入要是 smart pointer
: C++ 自动内存管理 靠的就是 函数返回时 清空stack 或者 {}结束 清空局部变量
: 模仿GC来用smart pointer是行为艺术

N******K
发帖数: 10202
4
这种从C继承的观点 很有问题 太落后了

【在 t****t 的大作中提到】
: 早就说过C++ 的smart pointer跟GC没啥关系, 就是RAII而已.
m*******l
发帖数: 12782
5
Stroutstrup 自己也说GC的,所以不能完全说没有关系。

【在 t****t 的大作中提到】
: 早就说过C++ 的smart pointer跟GC没啥关系, 就是RAII而已.
t****t
发帖数: 6806
6
这和GC是两种不同的手段,不能说哪个落后。和C也没什么关系。
简单的说,想用GC的,不合适用C++。

【在 N******K 的大作中提到】
: 这种从C继承的观点 很有问题 太落后了
t****t
发帖数: 6806
7
他说的GC应该指的是广义的资源回收,不是jvm那种自动清理型的gc.
C++11有所谓的minimal gc support, n2670, 所谓reachability based leak
detection, 这个才是大家说的那种gc。不过gcc还不支持。

【在 m*******l 的大作中提到】
: Stroutstrup 自己也说GC的,所以不能完全说没有关系。
N******K
发帖数: 10202
8
n2670 vs看起来似乎支持 你用过么?
http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx

【在 t****t 的大作中提到】
: 他说的GC应该指的是广义的资源回收,不是jvm那种自动清理型的gc.
: C++11有所谓的minimal gc support, n2670, 所谓reachability based leak
: detection, 这个才是大家说的那种gc。不过gcc还不支持。

b*******s
发帖数: 5216
9
你都说了多少外行话了这几天

【在 N******K 的大作中提到】
: 这种从C继承的观点 很有问题 太落后了
N******K
发帖数: 10202
10
我什么时候说过我是c++ smart pointer的专家了?

【在 b*******s 的大作中提到】
: 你都说了多少外行话了这几天
t*****n
发帖数: 4908
11
你到底学啥的?说过多少遍了,smart pointer不是让程序员偷懒,而是让程序更健壮
。比起不负责随便分配内存的某语言来说,smart pointer是相当靠谱。
weak_ptr你再读读boost的网页吧。解释的很清楚。

【在 N******K 的大作中提到】
: 把所有raw pointer替换为 shared_ptr or weak_ptr 等等 是sb行为
: 函数的传入传出指针都用raw pointer就行 只要保证这个函数内部没有内存泄露就可
: 以 函数内部可以用shared_ptr 或者 unique_ptr
: 例外就是 类的成员变量 如果是其他类的指针 就得用shared_ptr 或者weak_ptr 当用
: 函数初始化这些成员变量时,函数输入要是 smart pointer
: C++ 自动内存管理 靠的就是 函数返回时 清空stack 或者 {}结束 清空局部变量
: 模仿GC来用smart pointer是行为艺术

N******K
发帖数: 10202
12
不负责随便分配内存的某语言=?

【在 t*****n 的大作中提到】
: 你到底学啥的?说过多少遍了,smart pointer不是让程序员偷懒,而是让程序更健壮
: 。比起不负责随便分配内存的某语言来说,smart pointer是相当靠谱。
: weak_ptr你再读读boost的网页吧。解释的很清楚。

1 (共1页)
进入Programming版参与讨论
相关主题
smart pointer 一问c++指针的问题
difference between: char** p and char*p[] ??c++里 weak_ptr用起来是不是耗时间?
C++ pointer problem出个题考考大家:)
C++中怎么传递std::hex这样的参数啊简单的c code问题
C++的smart pointer注定是个二流的东西一个Quant Developer的C++面试题
什么时候使用c++ smart pointer?C++的很多library到底是趋于集中,还是各个公司独自开发,各立山头
不如各位高手挑个专题讲讲C++11吧大家要学习C++11啊, 我觉得C++11很多FEATURE,绝对不输JAVA.
c++ 里用到pointer 的地方我们尽可能用smart pointer吗?怎么准备一些hardcore C++的interview (转载)
相关话题的讨论汇总
话题: pointer话题: ptr话题: object话题: smart话题: c++