C++11-shared_ptr使用的两个坑
1、禁止使用一个裸指针创建多个智能指针
先看下如下的代码,会有什么样的问题呢?没错,ptr_1和ptr_2均使用裸指针(raw pointer),指向同一块内存,但它们彼此不相知。
当ptr_2作用域结束时,它会delete关联的裸指针(raw pointer),然后ptr_1的指针就会悬空,成为一个非法值。
同理,当ptr_1作用域结束时,它会delete关联的裸指针(raw pointer),然后ptr_2的指针就会悬空,成为一个非法值。
2. 禁止从栈对象创建shared_ptr
看下面一段代码:
shared_ptr要求与它关联的内存来自[……]
Read More