摘要:
记录学习过程 阅读全文
posted @ 2024-01-11 23:17
SIo_2
阅读(44)
评论(0)
推荐(0)
摘要:
new和delete new和malloc区别,delete和free区别 malloc和free,是C的库函数;new和delete,是运算符。 new不仅内存开辟,还能做内存的初始化,返回指针,如果开辟失败,抛出异常bad_alloc,而不是返回空指针;malloc只能进行内存开辟,返回指针,如 阅读全文
posted @ 2024-01-11 23:11
SIo_2
阅读(27)
评论(0)
推荐(0)
摘要:
引用 引用和指针的区别 引用是一种更安全的指针。 引用必须初始化,指针可以不初始化。引用初始化为另一个同类变量,特殊情况下可初始化为常量。 引用只有一级,没有多级引用。 从汇编指令层面看。对引用的处理,是采用指针的方法。因为引用是一种const指针。通过引用变量修改所引用内存的值,与通过指针解引用修 阅读全文
posted @ 2024-01-11 23:10
SIo_2
阅读(45)
评论(0)
推荐(0)
摘要:
函数重载 什么是函数重载:一组函数,函数名相同,但参数类型或个数不同。 C++为什么支持函数重载,但C不支持 本质是编译器产生符号的规则不一样:C++代码产生函数符号,由函数名和参数列表类型组成;而C代码产生函数符号,仅由函数名组成。当链接时,会发生符号的重定义。 重载的注意点 重载的前提是几个函数 阅读全文
posted @ 2024-01-11 23:09
SIo_2
阅读(17)
评论(0)
推荐(0)
摘要:
const 怎么理解const? const修饰的变量不能再作为左值。即初始化后不能被修改。 C和C++中的const有什么区别? C中const量可以只定义,但不被初始化(之后无法再赋值),称作常变量。事实上,通过指针仍可修改变量的值。 C++中的const必须初始化,称作常量。通过指针不可修改变 阅读全文
posted @ 2024-01-11 23:09
SIo_2
阅读(30)
评论(0)
推荐(0)
摘要:
内联函数 内联函数与普通函数的区别 inline函数:在编译过程中,就没有函数的调用开销了,在函数的调用点直接把函数的代码进行展开处理,符号表中也不产生内联函数符号。 函数的调用开销是什么:参数压栈,栈帧开辟,栈帧回退。 inline只是建议,不是所有inline被编译器处理为内联函数,比如递归,编 阅读全文
posted @ 2024-01-11 23:08
SIo_2
阅读(11)
评论(0)
推荐(0)
摘要:
参数为默认值的函数 参数从右面开始给默认值。 如果不缺省参数,需要在汇编层面mov实参到寄存器,并push压栈此寄存器值;而如果缺省一个参数,在汇编代码层面,相当于少一句mov指令,而可以直接push一个立即数。从而提高效率。 定义和声明两阶段都可以给默认值,但二者只能给一次,即使定义和声明两阶段给 阅读全文
posted @ 2024-01-11 23:07
SIo_2
阅读(12)
评论(0)
推荐(0)
摘要:
程序编译与链接原理 预编译:处理#命令,但保留#pragma,删除注释。 编译:词法分析、语法分析、语义分析和优化,生成汇编代码。 汇编:将汇编代码翻译成机器码(AT&T,x86语法),打包为可重定位二进制目标文件,此文件不可执行。输出符号表。 链接:合并.o文件段,合并符号表,解析并符号重定向。 阅读全文
posted @ 2024-01-11 23:04
SIo_2
阅读(13)
评论(0)
推荐(0)
摘要:
进程的虚拟地址空间内存划分和布局 编程语言->产生指令和数据 程序生成exe可执行文件,加载到内存后(不是一步直接加载到物理内存中)如何存放。 x86 32位linux下,linux会给进程分配一块2的32次方大小的一块空间(4G),这块空间是一块虚拟内存空间,虚拟内存空间本质上是系列数据结构。 这 阅读全文
posted @ 2024-01-11 22:50
SIo_2
阅读(45)
评论(0)
推荐(0)

浙公网安备 33010602011771号