![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
内存管理
文章平均质量分 70
zsiming
Why do we fall?
展开
-
shared_ptr的线程安全性探讨
在 一文详解C++11的三种智能指针中,我们详细探讨了C++11中提供的三种智能指针的应用场景以及shared_ptr的实现。今天需要探讨的是:shared_ptr的安全性。先上结论:不安全,需要加锁。原创 2022-09-09 18:46:35 · 710 阅读 · 0 评论 -
一文详解C++11的三种智能指针
在C++11中出现三种智能指针,分别是unique_ptr、shared_ptr、weak_ptr。这三种智能指针分别有各自的应用场景,同时这些应用场景是有相互联系的。和名字一样,unique_ptr的特点就是“独占”的意思,多个unique_ptr无法指向同一对象。相比于裸指针,unique_ptr的最大优势当然是超出作用域时会自动释放资源。其实unique_ptr解决的并不只是资源自动释放的问题。在C++11之前还有这两种类型的指针,unique_ptr在资源自动释放的同时也假设有下面的代码:在上面的原创 2022-07-14 16:24:36 · 3586 阅读 · 1 评论 -
C++ 手写智能指针 shared_ptr
C++智能指针简单实现原创 2022-06-30 15:55:22 · 1881 阅读 · 1 评论 -
new、express new、operator new、placement new 之间的千丝万缕
第一,编译器帮我们调用了operator new 来 申请一块干净的内存(未经过初始化)。第二,编译器帮我们把得到那块内存用static_cast函数进行类型转换成对应的类型。(C++的四种cast动作详解)第三,编译器帮我们调用了构造函数,在分配的内存中进行对象的构造。 在步骤一中 operator new 接收了一个参数,指明了“我想要多少字节的内存”。而对于后续的步骤二、三来说,从步骤一中得到的内存究竟是从哪儿来的其实它们并不关心,毕竟它们的职责只是构造对象而已。因此,我们就能对某些版本的op原创 2022-06-28 18:16:43 · 383 阅读 · 0 评论