C++学习之路
_闪光少女
这个作者很懒,什么都没留下…
展开
-
【C++11】理解智能指针实现原理(+内存泄漏)
智能指针为什么用智能指针?1.1 什么是内存泄漏?1.2 内存泄漏的危害1.3 内存泄漏的分类1.4 如何避免内存泄漏为什么用智能指针?智能指针是为了解决内存泄漏的问题。1.1 什么是内存泄漏?是由于疏忽或错误导致程序未能释放已经不再使用的内存的情况。并不是指内存在物理上的消失,而是在应用程序分配某段内存后,因为设计错误,而失去了对该段内存的控制,因而造成了内存泄漏。1.2 内存泄漏的危害长期运行的程序出现内存泄漏,如操作系统、后台服务等,会导致响应越来越慢,最终卡死。1.3 内存泄漏的分类原创 2020-08-31 10:58:32 · 1455 阅读 · 0 评论 -
【C++】 四种强制类型转换(static_cast 与 dynamic_cast 的区别!)
强制类型转换1. static_cast2. const_cast3. reinterpret_cast4. dynamic_cast5. 为什么要需要四种类型转换?1. static_cast实现C++种内置基本数据类型之间的相互转换,不能用于两个不相关类型进行转换。例如:将整形数据转换为浮点型c语言方式int a = 8;int b = 3;double result = (double)a / (double)b;C++方式int a = 8;int b = 3;dou原创 2020-08-30 22:14:30 · 6805 阅读 · 0 评论 -
【C++】设计模式 之 单例模式(手撕代码)
单例模式什么是单例模式饿汉模式懒汉模式什么是单例模式单例模式是常见的一种软件设计模式,单例对象的类只能实例化一个对象。该类负责创建对象,同时保证只能创建一个对象。并提供一个访问它的全局访问点,该实例被所有程序模块共享。一般应用与工具类的实现或者消耗资源的场景。特点:类构造函数私有持有自己类的引用对外获取实例的静态方法饿汉模式实例在初始化已经建好,不管你用不用,先建好再说。优点:没有线程安全的问题缺点:浪费内存空间。class singleton{public: //对外提原创 2020-08-29 23:14:21 · 968 阅读 · 2 评论 -
【C++关键字】 const 与 static 区别 (引申const 与 #define 区别)
const 与 staticstatic对普通变量和函数对成员变量和函数constconst 与 #define 的区别static对普通变量和函数变量在变量前加上关键字,被定义为一个全局静态变量或者局部静态变量。在内存中的位置:静态存储区(程序运行期间一直存在)。初始化:未被显示初始化的全局或者局部静态变量会被程序自动初始化为0。作用域:全局静态变量的作用域在声明他的文件内可见;局部静态变量的作用域在它的函数或者语句块结束的时候,随之结束。函数在返回值类型前加上关键字,就被定义原创 2020-08-26 15:12:05 · 8565 阅读 · 0 评论 -
【STL】 vector之 resize 和 reserve函数
vector引言resizereserve区别与联系引言在vector 中有 size() 和 capacity() 两个概念。size()是容器中实际的元素个数有多少(大小);capacity() 是容器的最大可存储空间。 resize() 改变的是元素个数的大小,reserve()改变的是存储空间。 存储空间大于等于元素个数大小。resizevoid resize (size_type n, value_type val = value_type());用来改变vector的大小(即siz原创 2020-08-25 18:22:16 · 1142 阅读 · 0 评论 -
【C++】 理解 多态 之 静态绑定与动态绑定
静态绑定与动态绑定静态类型与动态类型静态绑定与动态绑定缺省参数与虚函数为了支持C++的多态性,才用了动态绑定与静态绑定。静态类型与动态类型对象的静态类型:对象在声明时候的类型,是在编译时期确定的。对象的动态类型:目标所指向的对象,是在运行期决定的。对象的动态类型可以更改,但是静态类型无法更改。示例:class B{}class C : public B{}class D : public B{}D* pD = new D();//pD的静态类型是它声明的类型D*,动原创 2020-08-25 10:14:15 · 4318 阅读 · 0 评论 -
【C++】STL 之 vector 与 List 对比
vector 与 list 的区别1. vector 介绍1.1 vector 迭代器失效2. list 介绍2.1 list 迭代器失效3. vector 与 list 对比1. vector 介绍vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素原创 2020-08-04 11:36:12 · 607 阅读 · 1 评论 -
C++内存管理[malloc/free || new/delete]
内存管理1. C/C++内存分布1.1 为什么操作系统要划分这些区段2. C语言 动态内存管理方式(malloc/calloc/realloc)3. C++ 内存管理方式3.1 new/delete 操作内置类型3.2 操作自定义类型4. operator new 与 operator delete 函数5. new和delete实现原理5.1 内置类型5.2 自定义类型6.malloc/free 与 new/delete 的区别7. 内存泄漏1. C/C++内存分布【说明】栈又叫堆栈,非静态局部原创 2020-08-03 12:19:00 · 160 阅读 · 0 评论