C++
文章平均质量分 73
UIPAN
没有什么是一成不变的
展开
-
6 c++函数默认值 函数重载
二部分1.函数的默认值2.函数重载3.inline函数4.C/C++相互调用5.引用6.const const和指针的结合7.new/delete8.namespace函数调用过程 实参的入栈顺序 自右向左函数的实参和形参的匹配顺序 自左向右函数的默认值 函数设计过程中给予形参默认值 没有实参,形参有默认值函数默认值的赋予规则1.默认值的赋予自右向左依次赋予2.默认值不能重复赋予3.默认值一般设立在声明上#inc原创 2021-03-31 21:33:01 · 148 阅读 · 0 评论 -
4 c++ 链接
汇编 .o目标文件以编译单元为单位汇编阶段没有处理的:1.强弱符号2.符号表 外部符号处理3.指令段 虚假地址和虚假偏移链接阶段处理的:1.合并段和符号表 强弱符号2.符号解析3.分配地址和空间 程序和虚拟地址空间的映射4.符号的重定位处理UND区域符号 通过声明找到定义的位置符号解析 在符号引用的地方找到符号定义的地方进程运行1.建立虚拟地址空间和物理内存的映射(创建内核映射结构体),创建页目录页表2.加载指令和原创 2021-03-31 21:27:47 · 107 阅读 · 0 评论 -
3 c++ 目标文件链接
问题:汇编后,文件中存在什么内容?1.汇编阶段 bss少了4个字节 1个数据 少了那个数据 为什么? gdata3在comment段 因为预编译、编译、汇编阶段都是对源文件进行处理 这里涉及到强弱符号的问题。而强弱符号是在链接阶段处理的 静态的全局变量和静态的局部变量没有强弱符号一说,因为静态文件仅本文件可见 举例: 因为在汇编阶段,编译器对test.c的源文件进行处理时是看不见main.c的源文件的 所以在对test.c的原创 2021-03-31 21:24:07 · 184 阅读 · 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 · 202 阅读 · 0 评论 -
new和malloc
一、简单谈一下内存分配的几种方式1.从静态存储区域分配内存在程序编译的时候以近乎分配好,这块内存在程序的整个运行期间都存在。(例如全局变量、static变量)2.在栈上创建在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。占内存分配运算内置于存储器的指令集中,效率很高,但是分配的内存容量有限。3.从堆上分配(动态内存分配)程序在运行的时候用malloc或new申请任意多少的内存,然后再自行选择再何时free和delete释放内存。动态内存的生存期由我们原创 2021-03-30 23:35:15 · 204 阅读 · 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 · 194 阅读 · 0 评论