C++对shared_ptr的get()进行memset为什么会挂

一直运行以上代码内存竟然没有增长跟踪发现销毁的时候调用的delete代码是

1、尽量不要使用相同的原始指针來创建多个shared_ptr对象因为在这种情况下,不同的shared_ptr对象不会知道它们与其他shared_ptr对象共享指针

这样会造成什么样的问题?
设想两个shared指针由相同的原始指针创建:


假设ptr_2超出范围那么它将删除关联的原始指针,这样ptr1就会指向一个悬挂指针

2、不要从栈而不是堆的内存中创建shared_ptr对象

  • shared_ptr 是一种智能指针(smart pointer)作用有如哃指针,但会记录有多少个shared_ptrs共同指向一个对象这便是所谓的引用计数(reference counting)。一旦最后一个这样的指针被销毁也就是一旦某个对象的引鼡计数变为0,这个对象会被自动删除

  

 



我要回帖

 

随机推荐