![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++知识点汇总
文章平均质量分 84
子木呀
这个作者很懒,什么都没留下…
展开
-
二十万字C/C++、嵌入式软开面试题全集宝典十一
目录1、 红黑树的性质2、 红黑树的插入与旋转3、 红黑树与平衡二叉树4、 二叉平衡树、红黑树、B树、B+树的区别与联系5、 hello world 程序开始到打印到屏幕上的全过程?1、 红黑树的性质性质1.节点是红色或黑色。性质2.根节点是黑色。性质3.每个叶子节点都是黑色的空节点(NIL节点)。性质4.每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)性质5.从任一节点到其每个叶子的所有路.原创 2021-10-13 15:32:00 · 346 阅读 · 0 评论 -
二十万字C/C++、嵌入式软开面试题全集宝典十
目录1、 编码实现某一变量某位清0或置12、 分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。3、 局部变量全局变量的问题?4、 数组和指针的区别?5、 C++如何阻止一个类被实例化?一般在什么时候将构造函数声明为private?6、 如何禁止自动生成拷贝构造函数?7、 assert与NDEBUGE8、 Debug和release的区别9、 main函数有没有返回值10、 写一个比较大小的模板函数11、 c++怎么实现一个函数先于m原创 2021-10-04 17:33:47 · 765 阅读 · 0 评论 -
二十万字C/C++、嵌入式软开面试题全集宝典九
目录161、 空类162、 空类会默认添加哪些东西?怎么写?163、 标准库是什么?164、 const char* 与string之间的关系,传递参数问题?165、 char * 与char[]166、 sizeof 和strlen 的区别167、 针对char*和char[]求sizeof()168、 new、delete、operator new、operator delete、placement new、placement delete169、 空类的大小是多少?原创 2021-10-04 17:23:22 · 459 阅读 · 0 评论 -
二十万字C/C++、嵌入式软开面试题全集宝典八
目录141、 迭代器++it,it++哪个好,为什么142、 C++如何处理多个异常的?143、 模板和实现可不可以不写在一个文件里面?为什么?144、 在成员函数中调用delete this会出现什么问题?对象还可以使用吗?145、 三个智能指针146、 智能指针怎么用?智能指针出现循环引用怎么解决?147、 智能指针的作用148、 auto_ptr作用149、 class、union、struct的区别150、 动态联编与静态联编151、 动态编译与静态编译原创 2021-10-04 17:21:11 · 346 阅读 · 0 评论 -
二十万字C/C++、嵌入式软开面试题全集宝典七
目录121、 怎样判断两个浮点数是否相等?122、 宏定义一个取两个数中较大值的功能123、 define、const、typedef、inline使用方法?124、 printf实现原理?125、 #include 的顺序以及尖括号和双引号的区别126、 lambda函数127、 模板类和模板函数的区别是什么?128、 为什么模板类一般都是放在一个h文件中129、 C++中类成员的访问权限和继承权限问题。130、 cout和printf有什么区别?131、 重载原创 2021-10-04 17:04:16 · 428 阅读 · 0 评论 -
二十万字C/C++、嵌入式软开面试题全集宝典六
目录101、 字节对齐有什么作用?102、 C语言中#pragma用法103、 new和malloc的区别?104、 malloc/calloc/realloc三者之间的区别?105、 delete p;与delete[]p,allocator106、 new和delete的实现原理,delete是如何知道释放内存的大小?107、 malloc申请的存储空间能用delete释放吗108、 函数参数入栈的顺序109、 堆和栈区别110、 堆与栈的优点和缺点111、原创 2021-10-04 16:56:55 · 542 阅读 · 0 评论 -
二十万字C/C++、嵌入式软开面试题全集宝典五
81、 vector越界访问下标,map越界访问下标?vector删除元素时会不会释放空间?1.通过下标访问vector中的元素时不会做边界检查,即便下标越界。也就是说,下标与first迭代器相加的结果超过了finish迭代器的位置,程序也不会报错,而是返回这个地址中存储的值。如果想在访问vector中的元素时首先进行边界检查,可以使用vector中的at函数。通过使用at函数不但可以通过下标访问vector中的元素,而且在at函数内部会对下标进行边界检查。2.map的...原创 2021-10-04 16:48:08 · 524 阅读 · 0 评论 -
二十万字C/C++、嵌入式软开面试题全集宝典四
目录1、 虚函数的代价?2、 用C语言实现C++的继承3、 继承机制中对象之间如何转换?指针和引用之间如何转换?4、 C++四种类型转换5、 为什么要用static_cast转换而不用c语言中的转换?6、 组合与继承优缺点?7、 左值右值8、 总结左值和右值的概念9、 移动构造函数10、 C语言的编译链接过程?11、 vector与list的区别与应用?怎么找某vector或者list的倒数第二个元素12、 STL vector的实现,删除其中的元素,迭代器如原创 2021-10-04 16:37:09 · 1083 阅读 · 0 评论 -
二十万字C/C++、嵌入式软开面试题全集宝典三
目录1、 构造函数析构函数可否抛出异常2、 类如何实现只能静态分配和只能动态分配3、 如果想将某个类用作基类,为什么该类必须定义而非声明?4、 什么情况会自动生成默认构造函数?5、 构造函数的扩展过程?6、 程序员定义的析构函数被扩展的过程?7、 构造函数的执行算法?8、 哪些函数不能是虚函数9、 虚函数的调用机制10、 什么是类的继承?11、 什么是多继承12、 什么是组合?13、 抽象基类为什么不能创建对象?14、 纯虚函数定义15、 虚...原创 2021-10-04 16:25:45 · 636 阅读 · 0 评论 -
二十万字C/C++、嵌入式软开面试题全集宝典二
目录1、静态绑定和动态绑定的介绍2、C语言struct和C++struct区别3、虚函数可以声明为inline吗?4、介绍 C++ 所有的构造函数5、 什么情况下会调用拷贝构造函数6、 为什么拷贝构造函数必须是引用传递,不能是值传递?7、 何时需要合成构造函数8、 何时需要合成复制构造函数9、 C++类的虚函数表和虚函数在内存中的位置10、 同一个类,实例化多次,是否共享虚函数表?11、 编译器处理虚函数表应该如何处理12、 类成员初始化方式?构造函数...原创 2021-10-04 16:18:10 · 444 阅读 · 0 评论 -
C++类对象在内存中的布局
目录一、前言二、C++ 类对象的内存布局2.1 只有数据成员的对象2.2 没有虚函数的对象2.3 拥有仅一个虚函数的类对象2.4 拥有多个虚函数的类对象三、继承关系中的C++类对象内存分布3.1 存在继承关系且本身不存在虚函数的派生类的内存布局3.2本身不存在虚函数(不严谨)但存在基类虚函数覆盖的单继承类的内存布局3.3 定义了基类没有的虚函数的单继承的类对象布局3.4 多继承且存在虚函数覆盖同时又存在自身定义的虚函数的类对象布局3.5如果第1个直接基...原创 2021-09-26 13:28:39 · 2780 阅读 · 5 评论 -
C++类对象中虚函数表指针、虚函数表、虚函数之间的关系以及在内存中的布局
目录C++类的虚函数表和虚函数在内存中的位置虚函数表和虚函数在内存中的位置说明结论原文C++类的虚函数表和虚函数在内存中的位置_JMW1407的博客-CSDN博客C++类的虚函数表和虚函数在内存中的位置关系:虚函数表指针(保存在堆或栈)->虚函数表(常量区.rodata)->虚函数(代码段 .text)虚函数表指针是虚函数表所在位置的地址。虚函数表指针属于对象实例。因而通过new 出来的对象的虚函数表指针位于堆,声名对象的虚函数表指针位于栈。总结:1...原创 2021-09-26 13:27:19 · 918 阅读 · 1 评论 -
详解操作系统中虚拟内存与物理内存的关系
点击链接阅读更多:一文理解虚拟内存、物理内存、内存分配、内存管理 - 知乎目录一、虚拟内存与物理内存1.1 虚拟内存1.2 虚拟内存与物理内存二、C/C++中虚拟内存分配模型2.1 C语言中内存分配模型2.2 C++语言中内存分配模型三、程序占用的内存是虚拟内存还是物理内存3.1 内存管理3.1.1 内存管理概念3.1.2 glibc内存管理器3.1.3 内存管理器面临的困难3.1.4 以堆为例讲解内存的申请与释放3.2 代码占用的内存3.2.原创 2021-09-25 22:39:04 · 6932 阅读 · 0 评论 -
详解进程的虚拟内存,物理内存,共享内存
目录写在前面:一、关于内存的两个概念1.1 虚拟内存1.2 驻留内存二、详解top命令中VIRT、RES和SHR2.1 top命令中ⅥRT、RES和SHR的含义三、进程的smaps文件写在前面:想必在Linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题,你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存。这里我们可以看到VIRT、RES和SHR三个重要的指标,他们分别代表什么意思呢?这是本文需要跟.原创 2021-09-25 22:37:25 · 10732 阅读 · 4 评论 -
为什么HTTP3.0使用UDP协议
目录1. 前言2.HTTP2.0和HTTP3.02.1 HTTP2.0和TCP的爱恨纠葛2.2 谷歌为什么选择UDP2.3 QUIC协议和HTTP3.03. QUIC协议详解3.1 队头阻塞问题3.2 0RTT 建链3.3 首次连接和非首次连接3.4 前向安全问题3.5 前向纠错3.6 连接迁移4. QUIC的应用和前景5.本文小结1. 前言通过本文你将了解到以下内容: HTTP2.0和TCP存在的一些问题 QUIC协议为什么原创 2021-09-25 22:34:51 · 481 阅读 · 0 评论 -
链表反转相关的题(C++模板)
目录反转单链表反转部分单链表K个一组反转单链表K个一组反转单链表(从尾结点开始)反转单链表定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULLclassSolution{public:ListNode*reverseList(ListNode*head){if(he...原创 2021-09-25 22:33:37 · 210 阅读 · 0 评论 -
详解mmap:是什么 为什么 怎么用
目录mmap基础概念mmap内存映射原理mmap和常规文件操作的区别mmap优点总结mmap相关函数mmap使用细节性能总结mmap基础概念mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空原创 2021-09-25 22:32:15 · 2546 阅读 · 0 评论 -
malloc()背后的实现原理——内存池
目录malloc()和free()的分配算法内存池池化技术相对于栈而言,堆这片内存面临着一个稍微复杂的行为模式:在任意时刻,程序可能发出请求,要么申请一段内存,要么释放一段已经申请过的内存,而且申请的大小从几个字节到几个GB都有可能,我们不能假设程序一次申请多少堆空间,因此,堆的管理显得较为复杂。那么,使用 malloc() 在堆上分配内存到底是如何实现的呢?一种做法是把 malloc() 的内存管理交给系统内核去做,既然内核管理着进程的地址空间,那么如果它提供一个系统调用,可以让原创 2021-09-25 22:29:53 · 1321 阅读 · 0 评论 -
linux中fork函数及子进程父进程执行顺序
目录一、fork入门知识二、fork进阶知识一、fork入门知识一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。我们来看一个例子:...原创 2021-09-25 21:56:01 · 15628 阅读 · 2 评论 -
sizeof()与strlen()
sizeof()可以计算所有类型,strlen()仅计算字符串。sizeof计算对象所占内存字节数,strlen()计算字符个数,遇到'\0'截止。char *a;char b[5];sizeof(a) = 8 ; // 64位系统,8代表的是指针的大小,指针占8字节sizeof(b) = 5 ; // 计算字符串数组的结果是真实的字符数组大小//strlen(a) strlen(b) // 无固定值,因为strlen判断的唯一标准是'\0',//它会根据a...原创 2021-09-25 21:54:33 · 284 阅读 · 0 评论 -
青蛙跳台阶扩展问题
原题:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。class Solution {public: int numWays(int n) { int p = 0, q = 0, r = 1;//初始化p为0 q为f(0)==0 r为f(1)==1 //p q r分别指f(x - 2) f(x - 1)原创 2021-09-25 21:50:53 · 148 阅读 · 0 评论 -
B树与B+树 两者的区别
一个m阶的B树具有如下几个特征: 根结点至少有两个子女。 每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m 每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m 所有的叶子结点都位于同一层。 每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划。 一个m阶的B+树具有如下几个特征: 有k个子树的中间节点包含有k个元素(B树中是k-1个元素...原创 2021-09-13 12:13:17 · 637 阅读 · 0 评论 -
出入栈顺序这类题的快速做法
在笔试堆栈知识点中通常会考一道典型的出入栈题型,格式为:已知按照0,1,2...9的顺序入栈,则下面哪个不能为出栈顺序?下面来进行分析。入栈顺序:0,1,2,3,4,5,6,7,8,9出栈情况分析:假如数字5出栈,则代表数字0,1,2,3,4肯定已经入栈,因为5只有入栈了才能出栈。此时0,1,2,3,4是否已经出栈了呢?我们不清楚,可能其中部分已经出栈。下面来例举几种情况。case1:0,1,2,3,4都没有出栈,则0-4的出栈顺序为43210case2:数字3已经出栈,则数字5后面原创 2021-09-12 18:14:30 · 1731 阅读 · 0 评论 -
N皇后问题
目录N皇后规则回溯三部曲N皇后C++完整代码链接:https://leetcode-cn.com/problems/n-queens/solution/dai-ma-sui-xiang-lu-51-n-queenshui-su-fa-2k32/都知道n皇后问题是回溯算法解决的经典问题,但是用回溯解决多了组合、切割、子集、排列问题之后,遇到这种二位矩阵还会有点不知所措。N皇后规则n皇后问题 研究的是如何将 n个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。..原创 2021-09-11 16:12:12 · 301 阅读 · 0 评论 -
C++中NULL和nullptr的区别
在编写C程序的时候只看到过NULL,而在C++的编程中,我们可以看到NULL和nullptr两种关键字,其实nullptr是C++11版本中新加入的,它的出现是为了解决NULL表示空指针在C++中具有二义性的问题,为了弄明白这个问题,我查找了一些资料,总结如下。一、C程序中的NULL在C语言中,NULL通常被定义为:#define NULL ((void *)0)所以说NULL实际上是一个空指针,如果在C语言中写入以下代码,编译是没有问题的,因为在C语言中把空指针赋给int和char指针的原创 2021-09-11 10:09:19 · 1058 阅读 · 0 评论 -
HTTPS 建立连接的详细过程
目录原文链接:HTTPS 建立连接的详细过程 - cccc_hi - 博客园简介对称加密和非对称加密建立连接tcp的三次挥手和四次挥手HTTP请求过程HTTPS原文链接:HTTPS 建立连接的详细过程 - cccc_hi - 博客园简介HTTPS是在HTTP的基础上和ssl/tls证书结合起来的一种协议,保证了传输过程中的安全性,减少了被恶意劫持的可能.很好的解决了解决了http的三个缺点(被监听、被篡改、被伪装)对称加密和非对称加密 对称加密 即加原创 2021-09-10 23:36:50 · 724 阅读 · 0 评论 -
stringstream用法总结
目录一、概念二、基本功能功能一:预定的格式将程序中的数据保存在一个string 中功能二:实现类型转换功能三:实现任意类型转换三、重要功能1.数字由空格或逗号分开。2.数字由逗号分开3.数字间不止一类符号分隔一、概念C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。istringstream类用于执行C++风格的串流的输入操作。ost...原创 2021-09-06 16:49:00 · 6908 阅读 · 0 评论