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的网页吧。解释的很清楚。
|