C++
文章平均质量分 82
菜鸟~~
求职意向:C++后台开发
展开
-
obj文件为什么不能运行?
obj文件是二进制可重定位文件,objdump -d main.o查看符号表可以发现在编译过程中,使用数据的地方存的都是0,使用函数的地方存的都是偏移量(就是函数和下一行指令地址的偏移量),也就是说编译的过程不给符号分配内存地址,编译阶段的地址是无效的。readelf -S main.o查看段表,可以发现虚拟内存地址都是零地址。编译生成.o文件时,它是一个可重定位文件,编译器还不清楚一些外部函数(变量)的地址,当链接器将.o文件链接成为可执行文件时,必须确定那些函数(变量)的性质,如果是静态目标.原创 2022-05-16 20:16:58 · 1232 阅读 · 0 评论 -
STL泛型算法和绑定器
泛型算法是用模板(template)来实现的,因为泛型算法是给所有容器都使用的,所以接收的是容器的迭代器,泛型算法还可以传入不同的函数对象来更改。泛型算法的特点:泛型算法的参数接收的都是迭代器泛型算法的参数还可以接收函数对象常用的泛型算法:less,sort,find,find_if,binary_search,for_each绑定器+二元函数对象=一元函数对象bind1st:把二元函数对象的operator()(a,b)的第一个形参绑定起来bind2nd:把二元函数对象的operato原创 2022-05-15 13:48:47 · 172 阅读 · 0 评论 -
STL迭代器和函数对象
一、迭代器iterator(普通的正向迭代器,可读可写)和const_iterator(常量的正向迭代器,可读不可写)reverse_iterator和const_reverse_iterator二、函数对象函数对象类似C的函数指针,没有函数调用开销greater和less......原创 2022-05-15 13:04:49 · 276 阅读 · 0 评论 -
STL标准容器
一、 顺序容器1. vector2. deque3. list4. vector、deque和list的区别二、容器适配器1. stack2. queue3. priority_queue三、关联容器1. 无序关联容器2. 有序关联容器原创 2022-05-15 13:00:25 · 327 阅读 · 0 评论 -
C函数调用堆栈
main函数的栈帧调用sum函数的栈帧,sum函数栈帧使用完了以后回退都是怎么进行的,要搞清楚这个问题必须得看汇编代码,汇编代码分为两种:inter x86(windows)和AT&T(unix)。这两种汇编非常相似,x86的汇编是从右向左看,unix的汇编是从左向右看的。局部变量都是通过栈底指针ebp偏移访问,不生成符号,不属于数据,属于指令。形参压栈在C/C++中是从右向左压栈,因为要支持可变长参数,如果从左向右,编译器就不知道用户传入了多少实参,形参内存是在调用函数栈帧中开辟,每压栈一.原创 2022-05-04 16:57:23 · 1170 阅读 · 0 评论 -
深入编译链接和运行(二)
一. 编译阶段二. 链接三. 可执行文件的组成格式四. 可执行文件装载到内存五. 总结原创 2022-03-18 16:43:39 · 209 阅读 · 1 评论 -
深入编译链接和运行(一)
一. 计算机系统二. 虚拟地址空间三、 编译链接过程1. 预编译2. 编译3. 汇编4. 链接四. 解析ELF文件头1. 查看ELF文件头2. 查看所有段3.```.bss```段并没有在文件中存储,运行的时候如何知道这些初始值为0的变量存在?4. 强弱符号原创 2022-03-18 09:55:24 · 530 阅读 · 0 评论 -
C++错题集
p1指向可以改变,指向的值不允许改变。p2指向不可以改变,指向的值可以改变,因为world是字符串常量,存储在.rodata区,所以是不可以修改的。x&(x-1)可把二进制形式的最低位置为0A. getchar()返回值为char类型B和D:不能访问没有初始化的指针指针数组和数组指针的区别根据规律,看1-30里面含有多少3的倍数,3,6,12,15,21,24,30 每个数含有1个3, 9,18,还有2个3, 27 还有3个3 ,一共14个3。 因为进制相当与乘除.原创 2021-11-09 10:56:22 · 601 阅读 · 0 评论 -
C++校招面经
C++校招面经1. C++this指针是干什么用的?2. C++的new和delete,什么时候用new[]申请,可以用delete释放?3. C++的static关键字的作用?4. C++继承的好处?3. C++继承多态,空间配置器,vector和list的区别,map,多重map?技术面应该注意的问题:当面试官问问题时,不要着急做答,适当停顿,整理逻辑思路对于简单问题回答不要照本宣科,找准问题回答的角度/层次,争取简单问题回答的比较有亮点对于相对复杂的问题,比较难以阐述的问题,思考上要花一些时原创 2021-10-03 13:17:10 · 588 阅读 · 0 评论 -
C和C++的区别
C和C++的区别函数赋值四种函数宏函数inline函数(内联函数)static函数普通函数函数重载多态C函数和C++函数的相互调用函数赋值(1) 函数参数的赋值顺序必须从右向左不能跳过(2)函数的默认值参数具有作用域就近性(3)函数参数默认值在一个作用域只能给一个//int fun(int a, int b=300, int c ) //error(1)int fun(int a, int b, int c=100){ cout << a << endl;原创 2021-07-28 13:09:27 · 249 阅读 · 0 评论 -
编译链接和函数调用过程
一、虚拟地址空间的分配二、编译链接三、函数调用过程1.参数入栈:2.函数栈帧开辟3.返回值返回4.栈帧回退5.参数清除原创 2021-07-26 16:03:57 · 279 阅读 · 0 评论 -
体验智能指针的强大
体验智能指针的强大一、基础知识二、不带引用计数的智能指针三、实现带引用计数的智能指针四、shared_ptr的交叉引用问题五、多线程访问共享对象的线程安全问题六、自定义删除器原创 2021-09-13 21:26:49 · 373 阅读 · 0 评论 -
C++模板编程--学习C++类库的编程基础
一、函数模板二、类模板三、实现C++ STL向量容器vector代码四、理解容器空间配置器allocator的重要性原创 2021-08-17 11:05:16 · 320 阅读 · 0 评论 -
new和delete
malloc和free,称作C的库函数new和delete,称作运算符1.new和malloc的区别是什么?malloc:开辟内存但是不初始化;通过返回值和nullptr作比较来判断内存开辟失败;malloc开辟是指定类型,返回值不需要类型强制。new:开辟内存并且初始化;通过bad_alloc类型的异常来判断;new按字节开辟,不管什么类型,返回void*对返回值进行类型转换。2.delete和free的区别是什么?free:函数调用,传起始地址delete:单个不加[],数组加[]int原创 2021-08-12 20:41:56 · 253 阅读 · 0 评论 -
C++面向对象
一、引入实现程序的目的------模拟现实C语言:struct只有属性没有行为struct Person{ const char* _name; int _sex; int _age; void (*eat)(struct Person* per); void (*run)(struct Person* per); void (*sleep)(struct Person* per); void (*show)(struct Person*原创 2021-08-04 21:57:56 · 6433 阅读 · 1 评论 -
C++面向对象--类和对象哪些你不知道的细节原理
一、类和对象、this指针二、掌握构造函数和析构函数三、对象的深拷贝和浅拷贝四、构造函数的初始化列表五、类的各种成员方法及区别六、指向类成员的指针原创 2021-08-14 18:45:12 · 1158 阅读 · 0 评论 -
C++对象优化
高效的C++编程---对象优化1. 对象使用过程中背后调用了哪些方法2. 函数调用过程中对象背后调用的方法3. 对象优化的规则4. CMyString5.move和forward原创 2021-09-09 19:22:38 · 241 阅读 · 0 评论 -
C++运算符重载
一、学习复数类CComplex二、模拟实现C++的string类代码三、string字符串对象的迭代器iterator的实现四、vector容器的迭代器iterator实现五、容器的迭代器失效问题六、new和delete的原理七、new和delete重载实现的对象池应用.........原创 2021-08-20 18:20:08 · 432 阅读 · 0 评论 -
C++11中bind绑定器和function函数对象
C++11中引入bind绑定器和function函数对象一. bind1st和bind2nd二. 模板的完全特例化和非完全特例化三. function函数对象四. bind和function实现线程池五. lambda表达式原创 2021-09-16 12:19:04 · 1066 阅读 · 0 评论 -
C++设计模式
一、单例模式1. 饿汉式单例模式2. 懒汉式单例模式二、 简单工厂三、工厂方法四、抽象工厂五、代理模式六、装饰器模式七、适配器模式八、观察者模式原创 2021-09-28 11:12:14 · 685 阅读 · 0 评论 -
C++11知识点汇总
C++11知识点汇总一. 常用知识点总结二. 多线程类thread三. 线程互斥锁mutex四. 线程间同步通信---生产者消费者模型五. lock_guard和unique_lock六. 基于CAS操作的atomic原子类型原创 2021-09-17 17:34:56 · 398 阅读 · 0 评论