首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
C/C++
chirpyli
创建于2021-12-03
订阅专栏
C与C++的相关技术文章分享
等 1 人订阅
共12篇文章
创建于2021-12-03
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
理解C指针
在阅读《深入理解计算机系统》时,读到理解指针这一节,写的非常好,这里对其进行学习总结。下面的内容部分摘自《深入理解计算机系统》,部分是自己的学习总结。 理解指针 指针是C语言的一个核心特色,以一种统一
STL堆实现
堆是十分重要的数据结构,我们常用的优先队列就是基于堆实现的数据结构,堆排序也是基于堆实现的,所以,我们要理解堆的实现,之前自己根据堆的原理自己实现了堆,现在来分析一下STL中堆的实现代码,STL的堆实现相比自己实现的代码肯定要多很多,但原理是一样的,我们下面看一下。 STL中提…
STL关联容器
这里简单学习一下STL关联容器,主要是map、multimap、set、multiset以及unordered_map。前四个底层实现都是利用红黑树实现的,查找算法时间复杂度为O(log(n)),而unordered_map从名字上就知道是无序容器,其实现原理类似哈希表,查找算…
STL常用序列容器
这里简要的记述一下STL常用容器的实现原理,要点等内容。 vector是比较常用的stl容器,用法与数组是非类似,其内部实现是连续空间分配,与数组的不同之处在于可弹性增加空间,而array是静态空间,分配后不能动态扩展。vecotr的实现较为简单,主要的关键点在于当空间不足时,…
Linux poll编程实例
相关定义poll实现的echo服务端代码
ECHO服务器的epoll实现代码(Linux C)
下面是echo服务端代码,在处理边缘触发时,一定要十分小心,另外这里的错误处理比较简单粗暴,实际的工程中错误处理比较麻烦。代码如下,采用边缘触发模式。
C++虚函数的工作原理
讨论静态绑定与动态绑定,首先需要理解的是绑定,何为绑定?函数调用与函数本身的关联,以及成员访问与变量内存地址间的关系,称为绑定。 理解了绑定后再理解静态与动态。 静态绑定:指在程序编译过程中,把函数调用与响应调用所需的代码结合的过程,称为静态绑定。发生在编译期。 动态绑定:指在…
C++虚析构函数
C++虚析构函数主要关注两个问题,什么时候要用虚析构以及它是怎么工作的。下面回答这两个问题。 答案:通过基类的指针来删除派生类的对象时,基类的析构函数应该是虚的。这样做是为了当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用。 原因:用对象指针来调用一个函数,有…
Linux进程间通信——信号
信号(Signals)是Unix、类Unix以及其他POSIX兼容的操作系统中进程间通讯的一种有限制的方式。它是一种异步的通知机制,用来提醒进程一个事件已经发生。当一个信号发送给一个进程,操作系统中断了进程正常的控制流程,此时,任何非原子操作都将被中断。如果进程定义了信号的处理…
多线程编程(Linux C)
多线程编程可以说每个程序员的基本功,同时也是开发中的难点之一,本文以Linux C为例,讲述了线程的创建及常用的几种线程同步的方式,最后对多线程编程进行了总结与思考并给出代码示例。 多线程编程的第一步,创建线程。创建线程其实是增加了一个控制流程,使得同一进程中存在多个控制流程并…
Linux进程间通信——管道
调用pipe函数时在内核中开辟一块缓冲区(称为管道)用于通信,它有一个读端一个写端,然后通过filedes参数传出给用户程序两个文件描述符,filedes[0]指向管道的读端,filedes[1]指向管道的写端。向这个文件读写数据其实是在读写内核缓冲区。pipe函数调用成功返回…
C++笔试题
1. 运行下面的C++代码,得到的结果是什么? 答案是:Print1调用正常,打印出hello world,但运行至Print2时,程序崩溃。调用Print1时,并不需要pA的地址,因为Print1的函数地址是固定的。编译器会给Print1传入一个this指针,该指针为NULL…