sofard

导航

2018年10月24日 #

STL里的内存池实现

摘要: 这个貌似有点复杂,解决的主要问题 就是 减少 内存分配次数,减少用户态核心态切换中断次数,提高运行速度,预分配 和线程池一个道理,预分配 ////////////////////自由链表 union obj { union obj * newt; char value[1]; } 这块暂时没看懂,为 阅读全文

posted @ 2018-10-24 16:32 sofard 阅读(140) 评论(0) 推荐(0) 编辑

2018年10月20日 #

构造函数,C++内存管理,内存泄漏定位

摘要: 构造函数 1.构造顺序 虚基类构造函数,基类构造函数,类对象构造函数,自己的构造函数 2.必须使用初始化列表 (1) 引用成员,常量成员; (2) 基类没默认构造函数(自己重载覆盖了), (3)类对象成员没默认构造函数(自己重载覆盖了) 3.析构顺序 reverse( 虚基类构造函数,基类构造函数, 阅读全文

posted @ 2018-10-20 15:25 sofard 阅读(234) 评论(0) 推荐(0) 编辑

内联函数,宏定义,内存对齐,类型转换

摘要: 宏 与 inline的区别 存在的价值,两者都是文本替换,降低程序跳转次数,提高效率 1. define 是预处理命令,无法调试 ,最简单文本替换, inline 是编译期替换,可以调试, 存在参数类型检查 2. 使用inline的时候,函数必须定义 直接定义的函数,自动转化为inline defi 阅读全文

posted @ 2018-10-20 15:07 sofard 阅读(398) 评论(0) 推荐(0) 编辑

智能指针实现

摘要: 原来的内存管理代码 int main(){ int *ptr = new(nothrow) int(0); //关闭异常 if(!ptr) { cout << "new fails." return 0; } if(!check()) ///有校验 ,抛出异常,每次都得管理内存 { delete p 阅读全文

posted @ 2018-10-20 14:18 sofard 阅读(130) 评论(0) 推荐(0) 编辑

指针,引用,数组

摘要: 指针与引用的定义与区别 1. 指针:指针是一个变量,存储的是一个地址,指向内存的一个存储单元; 引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已; 2. NULL,初始化,能否改变 3. sizeof() 大小 4.函数参数传递,引用不会拷贝任何副本,指针还是拷贝指针副本 ///// 阅读全文

posted @ 2018-10-20 13:34 sofard 阅读(226) 评论(0) 推荐(0) 编辑

2018年10月19日 #

C++多态,虚函数,虚函数表,纯虚函数

摘要: 1、多态性 指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。 C++支持两种多态性:编译时多态性,运行时多态性。 a、编译时多态性:通过重载函数实现 ,模板(2次编译) b、运行时多态性:通过虚函数实现。 2、覆盖,隐藏,重载 重载,静态多态,一个类里面 覆盖, 虚函数 ,同参数, 阅读全文

posted @ 2018-10-19 23:27 sofard 阅读(175) 评论(0) 推荐(0) 编辑

C++ new 和malloc 区别

摘要: 1.分配地方不同,malloc是堆上面,new是自由存储区域 2.malloc/delete是函数,new/delete是操作符,可以重载 3.malloc 要指定大小,返回的是void*指针,开辟的是空空间,失败返回NULL new有类型检测,编译器会自动计算大小,还会初始化空间,返回的是类指针, 阅读全文

posted @ 2018-10-19 22:51 sofard 阅读(160) 评论(0) 推荐(0) 编辑

C++几个重要关键字(包含借鉴其他博主的东西)

摘要: //内存 栈区 与 static区 ,C++为了兼容C,#include 只是文本替换,导致一堆命名空间之间的复杂问题,倍受人诟病 extern 关键字 1.基本含义:意如其名,告诉编译器声明的东西是外部的。 特殊用法 extern "C" + 函数,声明这个函数翻译优化的时候 函数名 不改变(c+ 阅读全文

posted @ 2018-10-19 22:30 sofard 阅读(339) 评论(0) 推荐(0) 编辑

2018年10月8日 #

设计模式之装饰者模式

摘要: 本文章需要的基础知识:继承,多态,工厂模式。 场景:可以任意加配料的咖啡,能输出咖啡名和价格。 原理:叠加,组合。 所有的咖啡都能输出咖啡名和价格,那么名字和价格设为虚函数应该没问题。即我们要有个抽象基类包含名字,价格这2个函数,那不就是water么!! water { virtual PrintD 阅读全文

posted @ 2018-10-08 22:33 sofard 阅读(125) 评论(0) 推荐(0) 编辑