03 2020 档案
摘要:sei cert c++ 提供了一些安全c++编程的tips, 本文参照2016标准 2-1 弃用C语言的不定参函数 1.用template代替C语言的不定参函数 2.用std::enable_if处理变参长度为0的情况 2-2 下划线命名规则 1.不用下划线作头文件的宏 2.用户自定义operat
阅读全文
摘要:一:C语言中的右值概念 左值:既能出现在等号左边,又能出现在等号右边的变量(或表达式),可以寻址 右值:智能出现在等号右边的变量或表达式,无法寻址 例如:a = 10, a是左值,10就是右值 二:右值引用 rValue reference C++11中用&&代表右值引用,左值引用只能引用左值,右值
阅读全文
摘要:4:std::weak_ptr std::weak_ptr从shared_ptr产生,特性: std::weak_ptr 是一种智能指针,它对被 std::shared_ptr 管理的对象存在非拥有性(“弱”)引用。在访问所引用的对象前必须先转换为 std::shared_ptr。 std::wea
阅读全文
摘要:3. std::shared_ptr 先引入引用计数的概念 参考博客:https://blog.csdn.net/qq_29108585/article/details/78027867 简言之,当新建一个shared_ptr对象时,内存中会开辟一个区域来记录引用次数 引用计数会因如下原因增加: 用
阅读全文
摘要:智能指针的最主要作用还是自动释放资源,常用3种智能指针:unique_ptr, shared_ptr, weak_ptr 1. auto_ptr c++98中提供了一种指针容器auto_ptr,基本已弃用,具有如下几个特性: (1)无引用计数 (2)不能指向数组 (3)不能放入容器中使用 2. un
阅读全文
摘要:本文描述用std::atomic实现线程资源互锁 std::atomic用于实现程序里的原子操作,有关原子操作在《C++ Concurrency in Action》中的介绍: 原子操作是一类不可分割的操作,当这样操作在任意线程中进行一半的时候,你是不能查看的;它的状态要不就是完成,要不就是未完成。
阅读全文
摘要:本文将介绍C++11中实现并发以及用mutex实现资源互锁。 先强化一下并发的概念, 下图介绍了一个计算机处理恰好两个任务时的理想情景,每个任务被分为10个相等大小的 块。在一个双核机器(具有两个处理核心)上,每个任务可以在各自的处理核心上执行。在单核 机器上做任务切换时,每个任务的块交织进行。但它
阅读全文