c++
min_xi
努力一定会有回报
展开
-
【c++】虚拟地址空间的布局
每一个程序运行都会有一个虚拟地址空间1.虚拟地址空间有多大?CPU的位数有关(ALU的宽度,数据总线的条数) x86 32bit Linux内核(4G)2.为什么是数据总线的条数?16CPU 数据总线:16 地址总线:208CPU 数据总线:8 地址总线:16.bss 未初始化和初始化为0的全局变量和静态变量.data已初始化且初始化不为0的全局变量和静态变量...原创 2019-07-18 19:03:50 · 188 阅读 · 0 评论 -
C++继承多态面试题总结
1.类的默认权限:private2.类的编译顺序:类名---》编译成员名---》编译方法体 类的构造顺序:成员对象---》类对象 子类的构造:先构造父类,再构造子类 子类的析构:先析构子类,再析构父类 子类构造时需要提供父类的参数时,要在子类的初始化列表初始化3.成员方法之间的关系重载:作用域相同 函数名相同 参数列表不同隐藏:子类会隐藏父类中成...原创 2019-01-15 14:23:05 · 733 阅读 · 0 评论 -
【C/C++区别】new/delete malloc/free
C malloc freemalloc void*malloc(size_t size) 1.半开半闭 容易越界 2.类型强转free void free(void* ptr)C++ new deletenew的底层实现new创建新对象时1)分配内存2)调用构造函数调用new会发生:1.object *p = new object();new->ope...原创 2019-07-23 19:26:45 · 152 阅读 · 0 评论 -
【C/C++区别】函数重载 引用
函数重载(重定义)函数覆盖(重写)函数符号的生成规则C:函数名C++:函数原型返回值x 函数名x 函数形参v(1.参数个数2.参数类型3.参数顺序)给函数重载做了支持重载的三要素:同名 不同参 同作用域所有内置类型系统会强制转换2..引用:别名指针和引用的区别1)引用不是一个对象,而指针是对象2)引用必须在定义时初始化,而指针可以不用,使得 ...原创 2019-07-23 20:30:14 · 136 阅读 · 0 评论 -
【c++】编译链接运行原理
编译链接运行原理编译链接预编译 .i删除#define文本替换 #if #endif #elif 递归展开#include 删除注释 添加行号和文件标识 #pragma编译 .s词法分析 语法分析 一条语句 语义分析 结合上下文 默认值从右向左赋值 代码优化 生成汇编指令汇编 .o 二进制可重定位目标文件汇编指令 mov add lea sub...原创 2019-07-19 18:29:52 · 162 阅读 · 0 评论 -
【C/C++区别】const
constC:常变量编译阶段 常变量有没有做左值 其他的处理和变量一样的可取地址改变1.const int a = 10;int arr[a];x运行时,才会寻址找到a的值,编译时无法找到a的值2.const int a = 20;int* p = &a;*p = 10;C++ 常量编译阶段 把常量使用的地方替换常量初始化的值const int...原创 2019-07-25 19:35:52 · 64 阅读 · 0 评论 -
【C++关键字】inline
inline函数处理方式:编译阶段 在代码的调用点直接代码展开 不会生成符号static函数:inline函数和static修饰的函数的区别inline函数无开栈和清栈的开销 static修饰的函数有 inline函数在调用点直接代码展开 static修饰的函数 函数符号属性localinline函数和宏的区别inline函数 编译 类型检查和安全检查 宏 预编译 无...原创 2019-07-25 19:38:04 · 2388 阅读 · 0 评论 -
函数堆栈调用
汇编代码的认识寄存器:eax(累加器) ebx(基地址) ecx(计数器) edx(余数)pc(下一行指令地址寄存器)EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。EDX 则总是被用...原创 2019-07-22 20:06:31 · 108 阅读 · 0 评论 -
【c++】调用约定
为什么要有调用约定?1、当参数个数多于一个时,按什么顺序把参数压入栈?2、函数调用后,由谁来把堆栈恢复原装。_cdecl C标准调用约定int fun(char *a,unsigned long) -----"?fun@@YAHPADK@Z"YA函数采用从右到左的压栈方式_stdeall windows标准调用约定int fun(char *a,unsi...原创 2019-07-22 20:26:28 · 86 阅读 · 0 评论