c++类型转换运算符

有这么几行代码: 这是默认的shared_ptr中保存的是一个空指针。第二个输出结果为00000000我可以理解,shared_ptr重载了<<操作符,最终调用的是shared_ptr里面的_Px.get()。 第一个输出结果为false我就不理解了。虽然默认的shared_ptr中保存的是空指针,但是shared_ptr对象本身不为空,为什么行为跟空指针一样呢,if判断shared_ptr对象竟然是false,这背后肯定做了什么。 代码跳转到shared_ptr代码的定义,没有发现什么。只好反汇编一下if(p)的代码。反汇编显示调用的是std::shared_ptr<int>::operator... Read More | Share it now!

c++中的智能指针

内存管理是c++中比较棘手的问题。轻则是内存泄漏,重则是野指针、访问越界而崩溃,我们必须小心翼翼的对待指针。c++写多了,有时候会怀念java,c#这种有垃圾回收机制的语言,它们写出的代码是多么的干净优雅。 以前c++标准库里只有一个auto_ptr的智能指针,它的出现让我眼睛为之一亮,原来c++代码还可以这样管理指针啊。但是auto_ptr适应的场景有限,还有自己本身管理权转移晦涩的问题。 c++的准标准库boost为此准备了一组智能指针,scoped_ptr、socped_array、shared_ptr、shared_array、weak_ptr、intrusive_ptr。开源的浏览器chromium也有自己的智能指针解决方案linked_ptr、scoped_ptr、scoped_refptr、WeakPtr。c++... Read More | Share it now!