自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 [C++11] 智能指针

由于C++中没有垃圾清理机制,分配的内存需手动释放,否则就会产生内存泄漏,C++11中引入了智能指针的概念,使用其可以有效解决该问题。智能指针是存储指向动态分配对象指针的类。使用引用计数的技术,使用一次内部引用计数 +1,每析构一次,内部引用计数 -1,减为0时,删除所指向的堆内存。使用智能指针可以确保在离开指针作用域时,自动销毁动态分配的对象,防止内存泄漏。C++11中提供了三种智能指针,包含在中:1. 共享的智能指针:std::shared_ptr。

2023-10-23 15:47:25 35 1

原创 [C++11] 原子变量与原子操作

C++11中增加的官方并发支持库包含了名为的头文件,此文件中定义了原子变量,及其各种类型特化别名等。“原子”指的是,它们组合在一起形成了原子操作(Atomic Operation)。这意味着在执行原子操作时,它要么完全成功,要么完全失败,没有中间状态,保证了操作的完整性。原子拥有的原子性确保了在并发编程中数据的一致性和可靠性。

2023-10-08 16:29:33 132 1

原创 Modern C++线程同步

对于线程而言,除了独占的栈区,程序计数器,运行时使用的寄存器这些线程上下文,剩下的都是线程间的共享资源,也就是说进程地址空间的大部分区域都是对线程共享的。如果不去关注线程同步,就会导致多个线程同时读写数据造成数据不一致甚至引起程序的崩溃。在多线程并发场景下指令执行的先后顺序由内核决定,同一个线程内部指令按照先后顺序执行,但不同线程之间的指令执行先后顺序是不一定的。如果执行结果依赖于不同线程执行的先后顺序,那么就会形成竞态条件(race condition),使得计算结果不能预期。

2023-10-07 18:19:46 38 1

原创 [c++11] 右值引用

使用引用类型时要先进行初始化,因为引用类型本身不拥有绑定对象的内存,只是该对象的一个别名,所以通过右值引用的声明,就可获得该右值。需要注意的是,我们一般在提供移动构造函数的同时,也会提供常量左值引用的拷贝构造函数,以保证移动不成还可以使用拷贝构造函数。在上面代码中,move()函数并没有移动内容,而是将类型进行转换,将左值转换成右值,让右值引用指向它,里面的数据并没发生改变。所以右值引用能够指向右值,本质就是将右值变成左值,定义一个右值引用,并通过std::move()指向该左值。右值引用:实现移动语义;

2023-10-02 14:22:36 37 1

原创 排序合集(十大经典排序算法)

本篇介绍了十大经典排序算法,包括冒泡排序,选择排序,插入排序,希尔排序,快速排序,归并排序,堆排序,计数排序,桶排序,基数排序.

2023-09-24 15:43:17 49 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除