- 博客(8)
- 收藏
- 关注
原创 实现一个简单的STL allocator
1. 概述本文实现了一个简陋的allocator,并简单解释了new/delete的内部实现过程。2. 一个简单的STL allocatorSTL allocator是容器中的空间配置器,标准库默认的是std :: allocator。它的主要作用是内存分配与释放,对象构造和析构。它隐藏在容器内部,一般我们不需要关注,但了解其实现还是很有必要的。实现的简陋allocator如下(详见参考文献1):#ifndef MYALLOCATOR_H_#define MYALLOCATOR_H_
2021-09-01 23:25:32
273
原创 C++内存管理——unique_ptr
1. 概述本想将unique_ptr, shared_ptr和weak_ptr写在同一篇文章中,无奈越(废)写(话)越(连)长(篇),本着不给自己和读者太大压力的原则,最终决定分为三篇去描述它们(不是恶意凑文章数哦)。本篇文章主要描述了unique_ptr,在此之前先给出了auto_ptr的介绍,废话不说,直入正题。2. auto_ptrauto_ptr是在C++ 98中引入的,在C++ 17中被移除掉。它的引入是为了管理动态分配的内存,它的移除是因为本身有严重的缺陷,并且已经有了很好的替代者
2021-09-01 21:07:27
733
原创 Move constructors 和 Move assignment constructors简介
1. 概述本文将重点介绍"Move"语义相关的移动构造和移动赋值构造函数,同时也给出了与"Copy"语义的拷贝构造和拷贝赋值构造函数的对比。2. 拷贝构造和拷贝赋值构造函数在了解移动构造和移动赋值构造函数之前,我们先来看一下拷贝构造和拷贝赋值构造函数。拷贝构造函数:通过拷贝的方式,用一个相同类的对象去初始化类对象; 拷贝赋值构造函数:通过拷贝的方式,用一个类对象赋值给一个相同类且已经存在的类对象。如果代码中没有显式地给出拷贝构造和拷贝赋值构造函数,并且又会用到时,此时编译器将会生成一套默
2021-09-01 21:05:00
475
原创 Move语义和Smart Pointers先导(以一个例子说明)
1. 概述本文以一个例子引出移动语义、智能指针等C++基础概念,根据过程中遇到的问题,我们可以对为什么要有移动语义和智能指针有初步的理解。这是一个关于移动语义和智能指针的连续剧,初步规划了五篇文章,它们分别是《Move语义和Smart Pointers先导(以一个例子说明)》、《左值、右值、左值引用和右值引用浅析》、《Move constructors 和 Move assignment constructors简介》、《Move语义和完美Forwarding介绍》和《C++内存管理——Smart P
2021-09-01 21:03:02
162
原创 stable_sort自定义比较函数踩坑(粗浅理解)
1. 概述“好记性不如烂笔头”,本篇文章是“遇到的疑难杂症”的首篇。本文主要介绍了今天工作中遇到的STL stable_sort算法自定义比较函数的问题,只是粗浅的介绍,具体的解释待学习好STL源码后再解释(对STL这个大宝藏只是停留在使用的层次,而且还没用好)。2. 问题描述工作中遇到一个bug,大概的情况可以用如下的代码表示:#include <iostream>#include <algorithm>#include <vector>str
2021-09-01 21:00:31
1063
原创 Linux gdb的使用(基础版)
1. 概述“工欲善其事必先利其器”,本篇文章是“工具系列”的首篇,主要介绍gdb的基础使用,如要深入了解,可以研究参考文献1。2. gdb是什么gdb是GNU开源组织发布的一个强大的Unix/Linux下的程序调试工具,通过shell操作,可以实现各类IDE类似的调试功能。3. 为什么要使用gdb程序猿的代码总会有各种各样的错误,这些错误基本可以分为两类:语法错误:编译器会报错,解决比较方便 逻辑错误:此时就需要调试代码虽然我们有各种各样的IDE,但是对于从事 Linux C/C
2021-09-01 20:53:38
165
原创 类的关系(C++实现)
1. 概述在面向对象的程序设计中,类共有六种关系,它们分别是Composition、Aggregation、Association、Dependency、Generalization和Realization。理解类的六大关系对于面向对象的程序设计非常重要,也是理解设计模式的前提。本文给出概念介绍并结合C++代码给出解释,由于作者本身能力有限,难免有不当甚至错误,欢迎指出。文中给出的实例的完整工程详见参考文献1。2. 组合(Composition)Composition是一种 "part-of"
2021-09-01 20:50:37
734
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人