void func(int i, double d, const string& s) { cout << i << ", " << d << ", " << s << endl; } int main() { thread t(func, 1, 12.50, "sample"); t.join() ...
分类:
编程语言 时间:
2020-07-08 19:59:08
阅读次数:
81
智能指针的循环引用 class Node { public: shared_ptr<Node> left; shared_ptr<Node> right; Node(int v) { this->value = v; cout << "Constructor" << endl; } ~Node() ...
分类:
其他好文 时间:
2020-06-23 13:13:43
阅读次数:
90
引自:https://blog.csdn.net/man_sion/article/details/77196766 //模板类作为友元时要先有声明template <typename T> class SmartPtr; //辅助类template <typename T> class RefPt ...
分类:
编程语言 时间:
2020-06-16 23:16:35
阅读次数:
82
同样的道理,既然C++11只负责sp_counted_base的原子性,那么shared_ptr本身就没有保证线程安全了,加入两个线程同时访问同一个shared_ptr对象,一个进行释放(reset),另一个读取裸指针的值,那么最后的结果就不确定了,很有可能发生野指针访问crash。 ...
分类:
编程语言 时间:
2020-06-14 20:40:22
阅读次数:
64
RAII是什么 RAII全称是“Resource Acquisition is Initialization”,即资源获取即初始化。RAII技术被认为是C++中管理资源、避免泄露的最佳方法,可以实现安全、简洁的状态管理,编写出优雅的异常安全的代码。因为C++的语言机制保证了,当一个对象创建的时候,自 ...
分类:
编程语言 时间:
2020-06-01 20:41:03
阅读次数:
76
21、通过智能指针管理第三方库分配的内存 0、课前秀 + 第三方库分配的内存一般需要通过第三方库提供的释放接口才能释放,由于第三方库返回的指针一般都是原始指针,在用完之后没有调用第三方库的释放接口,就很容易造成内存泄露。 1、示例 + 第三方库的释放(可能会存放跟new,delete一样,忘记释放或 ...
分类:
编程语言 时间:
2020-05-25 19:51:58
阅读次数:
78
20、weak_ptr弱引用的智能指针 0、课前秀 + 弱引用指针weak_ptr是用来监视shared_ptr的,不会使引用计数加1,它不管理shared_ptr内部的指针,主要是为了监视shared_ptr的生命周期。 + weak_ptr没有重载操作符 和` `,因为它不共享指针,不能操作资源 ...
分类:
编程语言 时间:
2020-05-25 19:15:37
阅读次数:
66
19、unique_ptr独占的智能指针 0、课前秀 1、unique_ptr + 不允许通过赋值将一个unique_ptr赋值给另外一个unique_ptr。 + 可以通过函数返回给其他的unique_ptr,还可以通过std::move来转移到其他的unique_ptr,这样它本身就不再拥有原来 ...
分类:
编程语言 时间:
2020-05-22 16:45:17
阅读次数:
59
优化动态分配内存的变量 除了使用非最优算法外,乱用动态分配内存的变量就是C++程序中最大的性能杀手。C++中的一些特性使用标准库容器、智能指针和字符串等动态分配内存的变量。这些特性可以提高C++程序的编写效率。但是,也有副作用:当发生性能问题时,new就不再是你的好朋友了。 C++变量回顾 每个C+ ...
分类:
其他好文 时间:
2020-05-21 19:48:51
阅读次数:
49
最近面试的时候面试官问了我一个问题。unique_ptr和shared_ptr到底有什么区别?我一时语塞。回来之后我痛定思痛,决定好好的研究一下智能指针的问题。现在已经研究的差不多了,决定好好的总结一下。 一、智能指针的用途 二、智能指针的特性 三、智能指针的种类与用途 3.1 最原始的智能指针au ...
分类:
其他好文 时间:
2020-05-19 12:55:53
阅读次数:
66