
C++
文章平均质量分 73
UIPAN
没有什么是一成不变的
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
6 c++函数默认值 函数重载
二部分 1.函数的默认值 2.函数重载 3.inline函数 4.C/C++相互调用 5.引用 6.const const和指针的结合 7.new/delete 8.namespace 函数调用过程 实参的入栈顺序 自右向左 函数的实参和形参的匹配顺序 自左向右 函数的默认值 函数设计过程中给予形参默认值 没有实参,形参有默认值 函数默认值的赋予规则 1.默认值的赋予自右向左依次赋予 2.默认值不能重复赋予 3.默认值一般设立在声明上 #inc原创 2021-03-31 21:33:01 · 183 阅读 · 0 评论 -
4 c++ 链接
汇编 .o目标文件 以编译单元为单位 汇编阶段没有处理的: 1.强弱符号 2.符号表 外部符号处理 3.指令段 虚假地址和虚假偏移 链接阶段处理的: 1.合并段和符号表 强弱符号 2.符号解析 3.分配地址和空间 程序和虚拟地址空间的映射 4.符号的重定位 处理UND区域符号 通过声明找到定义的位置 符号解析 在符号引用的地方找到符号定义的地方 进程 运行 1.建立虚拟地址空间和物理内存的映射(创建内核映射结构体),创建页目录页表 2.加载指令和原创 2021-03-31 21:27:47 · 145 阅读 · 0 评论 -
3 c++ 目标文件链接
问题:汇编后,文件中存在什么内容? 1.汇编阶段 bss少了4个字节 1个数据 少了那个数据 为什么? gdata3在comment段 因为预编译、编译、汇编阶段都是对源文件进行处理 这里涉及到强弱符号的问题。而强弱符号是在链接阶段处理的 静态的全局变量和静态的局部变量没有强弱符号一说,因为静态文件仅本文件可见 举例: 因为在汇编阶段,编译器对test.c的源文件进行处理时是看不见main.c的源文件的 所以在对test.c的原创 2021-03-31 21:24:07 · 242 阅读 · 0 评论 -
2 c++ 编译原理
预编译(.i) 1.删除#define 文本替换 2.处理#include 递归展开 3.处理#if #endif 等预编译指令 4.删除注释 5.添加行号和文件标识 6.保留#pragma 编译(.s) 1.词法分析 2.语法分析 一行表达式 3.语义分析 结合上下文 4.代码优化 5.生成汇编指令 低级语言 **汇编(.o)**目标文件 可重入的二进制文件 1.翻译指令 (把低级语言翻译为机器语言) 链接(.exe) 能运行 可执行文件 数据段(.data 和 .bss)存放原创 2021-03-31 21:20:19 · 237 阅读 · 0 评论 -
new和malloc
一、简单谈一下内存分配的几种方式 1.从静态存储区域分配 内存在程序编译的时候以近乎分配好,这块内存在程序的整个运行期间都存在。(例如全局变量、static变量) 2.在栈上创建 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。占内存分配运算内置于存储器的指令集中,效率很高,但是分配的内存容量有限。 3.从堆上分配(动态内存分配) 程序在运行的时候用malloc或new申请任意多少的内存,然后再自行选择再何时free和delete释放内存。动态内存的生存期由我们原创 2021-03-30 23:35:15 · 241 阅读 · 0 评论 -
1.C++编译链接运行原理
预编译(.i) 1.删除#define 文本替换 2.处理#include 递归展开 3.处理#if #endif 等预编译指令 4.删除注释 5.添加行号和文件标识 6.保留#pragma 编译(.s) 1.词法分析 2.语法分析 一行表达式 3.语义分析 结合上下文 4.代码优化 5.生成汇编指令 低级语言 **汇编(.o)**目标文件 可重入的二进制文件 1.翻译指令 (把低级语言翻译为机器语言) 链接(.exe) 能运行 可执行文件 数据段(.data 和 .bss)存放原创 2020-08-19 19:59:10 · 242 阅读 · 0 评论