![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
顾沐一ya
这个作者很懒,什么都没留下…
展开
-
C++-----内联函数(inline)的使用
inline是C++的一个关键字,用来修饰函数。内联函数是C++中的一种特殊函数,它可以像普通函数一样被调用,但是在调用时并不通过普通函数调用的机制而是通过将函数体直接插入到调用处来实现,内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,可以减少由函数调用带来的开销。(以空间换时间)inline函数在编译阶段进行处理,会在函数的调用点直接将代码展开(会导致函数只在本文件中可见)...原创 2019-07-23 19:24:43 · 604 阅读 · 0 评论 -
C++-----函数堆栈调用(调用过程、内存开辟、调用约定)
在前2篇博客中总结了函数的编译链接运行过程和虚拟空间地址分布,是不是还不能将它们联系起来呢?通过函数调用堆栈就可以把它们串起来了,那么我们来看看它们到底是怎么回事吧~其实程序的运行可以看作是连续的函数调用,我们以几个问题开始分析函数调用过程:函数实参怎么传给形参?形参调用有没有开辟内存?如果开辟内存,在哪里开辟的? 函数的返回值怎么返回到调用方函数? 函数返回后怎么知道从哪条语句开始继...原创 2019-07-23 21:21:40 · 1325 阅读 · 1 评论 -
C++-----虚拟地址空间分布
操作系统(32位)会为每个进程分配4G(2的32次方计算得到)的虚拟地址空间,由用户空间和内核空间两部分构成。虚拟内存是内存的一种管理方式,实现对于逻辑上对于内存容量的扩展,使用硬盘(文件)来模拟的内存空间。Windows系统下,用户空间和内核空间以2:2比例划分,Linux系统下用户空间和内核空间以3:1划分。内核空间所有进程共享,用户空间各自独立。 虚拟地址空间分布如下图所示: (***64位...原创 2019-07-21 00:04:59 · 713 阅读 · 0 评论 -
C++-----程序编译链接运行原理
计算机不能识别高级语言,导致我们写好的程序不能直接运行,所以需要通过以下阶段将高级语言翻译成机器语言。预编译阶段:(.i) (gcc -E main.c -o main.i)删除“#define”并文本替换 处理所有条件项预编译指令(“#if”、“#endif”、“#ifdef”) 递归展开“#define” 删除注释 添加行号和文件标识(以便编译器产生...原创 2019-07-20 09:48:02 · 261 阅读 · 0 评论 -
C++----设计模式之观察者模式
观察者设计模式定义了对象间的一对多的依赖关系,一个对象的行为依赖于另一个对象的状态的情况下,当对象状态发生变化时,依赖它的对象会得到通知并自动刷新。观察者模式中主要有两种角色:观察者和监听者观察者主要是在事件到来时,通知对于该事件感兴趣的监听者来处理事件。所以它的职责也就显而易见了:①通知观察者;②注册事件。那么监听者当然就是来处理事件的了。接下来通过代码实现一个简单的观察者模式~...原创 2019-08-18 23:54:01 · 239 阅读 · 0 评论 -
C++----MySQL中常见的存储引擎
对于MySQL来说,它提供了很多种类型的存储引擎,我们可以根据对数据处理的需求,选择不同的存储引擎,从而最大限度的利用MySQL的功能。一般有MyISAM、InnoDB、MEMORY和ARCHIVE四种。MYSQL中可以通过“SHOW ENGINES”语句来查看。...原创 2019-08-14 21:47:46 · 232 阅读 · 0 评论