自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 初始化列表能提高效率的原因是什么?

??

2024-04-27 09:38:01 44

原创 [阅读]C++新经典

C13 ✅。

2024-04-25 10:32:59 70 1

原创 迭代器与容器

2024-04-25 10:03:27 303

原创 内联函数放在头文件中为什么不会报重定义错误?

??

2024-04-24 11:13:47 64

原创 程序运行之后,编译器怎样发挥作用?

??

2024-04-24 10:14:48 274

原创 Cpp初始化用()和{}的差别是什么?

??

2024-04-24 09:50:33 299

原创 为什么free不需要传入长度,malloc需要

??

2024-04-24 09:48:11 268

原创 cache好文整理

计算机缓存Cache以及Cache Line详解_cache line buffer-CSDN博客

2024-04-17 23:06:21 101

原创 函数声明、原型、定义

给出函数体 “{ }”....;// 需要包含函数体。

2024-03-17 19:43:28 349 1

原创 【三两波折】指向函数的指针

函数占用内存,在虚拟内存中属于txt段(只读),函数也是有地址的。(返回值类型)(*函数指针名)(参数列表)

2024-03-10 22:39:55 405

原创 【三两波折】char *foo[]和char(*foo)[]有何不同?

指的是一个大小为3的数组,数组存的是char *,通过foo[i]或*(foo + i)可以读取到对应为止的值。取址运算符已经和foo优先结合了,foo一定是一个指针。这个指针指向一个地址,这个地址是1*3大小的数组 [char][char][char]。定义了一个数组,大小是x,数组里存的是type类型。数组下标优先级最高,结合方式“左到右”,因此等价于“char *定义了一个数组foo,大小是3,数组里存的是。答:定义了一个数组,大小是3,数组里存的是int 类型。&ch:指向整个数组的指针。

2024-03-10 22:15:05 401

原创 【呜】如果要教你定义一个结构体

C语言中结构体是怎么定义的

2024-03-05 23:30:55 997

原创 2月读书计划

C21—— makefile及cmake部分后续学习。已读:C13-C20。

2024-02-16 20:22:30 356

原创 C语言中的整数安全:溢出、回绕

无符号数永远不会溢出,只是在无限的循环往复。对于加法、乘法,假装有额外的有效位来承载运算结果,最后再直接截断。加法例子减法例子。

2024-01-25 23:29:14 474

原创 可执行文件为什么又叫映像文件image?——程序员的自我修养——链接、装载与库》笔记

直到启动运行,可执行文件中的指令、数据都没有被装入内存中。OS仅通过可执行文件头部的信息建立起“可执行文件”和进程虚存之间的映射关系。举例子:身份证就是一种映射关系,我的身份证是“鹅城”给我发的,我并不需要真的在“鹅城”,但通过这个身份证的映射又真的能找到我。“可执行文件”与“执行该可执行文件进程的虚拟空间”存在着一种映射关系,这种映射关系只是保存在OS内部的一个数据结构。“可执行文件在装载时实际上是被映射的虚拟空间” —— 《程序员的自我修养——链接、装载与库》

2024-01-22 23:42:32 378

原创 未初始化的全局变量为什么可以认为放在.bss 段?

未初始化的全局变量是弱符号。编译成.o时,占的大小是未知的,有可能别的地方还定义了,且定义的size更大。但是链接器是要符号判决的,是能知道大小的,最终在bss段为其分配空间(可执行文件)。目标文件中,没有在.bss段分配空间,而是标记为COMMOM。

2024-01-21 23:30:46 379

原创 程序员的自我修养-笔记

4、链接之前,.o的VMA都是0,因为虚拟空间还没有分配。链接之后,可执行文件各个段就分到相应的虚拟地址。链接器在完成地址、空间分配之后,就可以确定所有符号的虚拟地址了,然后就可以对需要重定位的进行地址修正了。代码引用了外部代码、符号,对应.o“.rel.text”代码段的重定位表,“.rel.data”数据段的重定位表。2、链接器为目标文件分配地址和空间,.test、.data在可执行文件及装载后的虚拟地址中均占空间;1、.bss 在目标文件、可执行文件中并不占用空间,但在装载时占用地址空间。

2024-01-21 23:19:53 440

原创 优化程序性能

1、选择一组适当的算法和数据结构;编写编译器能有效优化以转换成高效可执行代码的源代码。2、编写的一小点变化,都会引起编译器优化方式的很大变化。3、消除不必要的函数调用、条件测试、内存引用。

2024-01-17 23:22:31 281

原创 《嵌入式C语言自我修养》第四章笔记

编译过程,将程序翻译成CPU能够识别和运行的二进制机器指令的过程。 从源程序到二进制文件的过程,很有意思 一个可执行文件中的每一个section都有一个section header,将这些section headers集中放到一起,就是section header table,翻译成中文就是节头表。section header描述各个section的名称、类型、起始地址、大小等信息。程序运行时,加载器会根据ELF header来获取可执行文件信息。 未初始化的全局变量和静态变量会放置在BSS段中,但是

2024-01-11 20:47:03 331

原创 谈谈寄存器

寄存器在CPU内部,用来暂存指令、数据,利用寄存器会非常的快,通常在一个CPU时钟周期就可以完成。控制器负责把内存上的指令、数据等读入寄存器,并根据指令的执行结果来控制整个计算机。CPU的内部一般由:寄存器、控制器、运算器和时钟组成。“机器语言级别的程序是通过寄存器来处理的” —— 《程序是怎么跑起来的》矢泽久雄。通过汇编/反汇编,可以发现寄存器大量参与我们的程序运行。从内存读入寄存器的数据。时钟负责发出CPU开始计时的时钟信号。—— 《程序是怎么跑起来的》矢泽久雄。寄存器可以看做内存的一种。

2024-01-04 23:38:48 412 1

原创 什么是程序/代码

程序由指令和代码组成。程序能指挥计算机每一步怎么去运行。CPU只能识别和执行机器语言。

2024-01-04 23:20:04 330 1

原创 关于指针、内存的一些释疑与疑问

我觉得是编译器直接优化掉了中间过程,直接往栈上内存写值。

2023-12-25 23:02:04 368 1

原创 一次看透const

a、#defineb、const#define修饰的符号名称是一个真量数值,而const修饰的栈常量,是一个“假”常量。在实际中,使用const定义的栈变量,最终还是一个变量,只是在编译期间对语法进行了检查,发现代码有对const修饰的变量存在直接修改行为则报错。——《C++反汇编与逆向分析技术揭秘》const 修饰的变量,根据实测,要区分是局部变量还是全局变量。如下图所示全局变量g_val,虽然我们通过指针转换,绕过了编译器检查,但实际在写入操作时,引发异常。

2023-12-24 22:05:13 1097 2

原创 static 变量是怎样对外不可见的?

a、只能在当前文件内使用。—— 由编译器在编译之前进行语法检查,来保证。b、其他店同全局变量相同—— 内存结构、访问原理。

2023-12-24 18:04:26 511 1

原创 位:相关知识点集锦

1. 结构体位域:本质是在进行与或运算。

2023-12-20 22:51:32 357

原创 怎么快速记住大端、小端

0x12 | 0x34| ... |... 这样的,跟我们阅读习惯一样的,从左到右,从地地址到高地址的,就是大端(符合我们阅读习惯)跟我们阅读习惯不太相符的,0x78, 0x56, 0x34, 0x12 就是小端。比如 0x12345678。假设地址从左到右:依次增高。

2023-12-20 22:33:40 463

原创 常用寄存器

eax。

2023-12-18 22:42:35 302 1

原创 编译和链接【未完待续】

扫描(词法分析)-语法分析(检查表达式是否合法)-语义分析(静态语义通常包括声明和类型匹配、类型的转换;动态语义:运行期出现的语义相关问题,比如除0)-源代码优化-代码生成-目标代码优化。编译Compilation:词法分析、语法分析、语义分析及优化后生成相应的汇编代码文件。汇编Assembly:将汇编代码转换成机器可以执行的指令。构建:编译和链接合并到一起的过程。预处理Prepressing。

2023-12-17 13:47:49 421 1

原创 【Cpp】一些“关键字”

1、export2、module

2023-09-30 17:37:05 19

原创 【Cpp】智能指针

1、更安全的管理动态内存,自动释放所指向的内存,不需要调用delete。

2023-09-25 22:54:30 26 1

原创 【Cpp】类和对象

对象是类的实例(instance),类是一个概念,实例是具体的、具有内存的。

2023-09-24 21:53:16 40

原创 【Cpp】常见术语缩写

1、ADT:Abstract Data Tyte 抽象数据类型。

2023-09-24 20:35:15 34

原创 【Cpp】new、delete

1、假设Cat代表各种类型(int、char、float、double、NodeStruct(结构体)、NodeClass(类)、...)3、new、delete 可以被重载。2、new —— 堆上进行分配。

2023-09-24 20:28:37 25

原创 【Cpp】iterator

1、end() 返回指向最后元素后一位置的指针。

2023-09-24 20:02:34 25

原创 【Cpp】指针杂谈录

1、指针变量保存某个内存单元的地址(同一台机器每个内存单元地址长度相同),指针变量需要的内存大小于数据类型无关。

2023-09-24 16:31:37 26

原创 【Cpp】左值、右值、引用、移动函数

内存区域可以理解为左值,存的值可以理解为右值, 变量可以即为左值又为右值(读取该变量所代表内存的数据)。4、左值指内存区域,放在“=”左边,将右边表达式的计算结果写入内存,只是用变量名来代表内存区域;此时age 用的是它的右值属性。1、放在赋值语句左边的变量 —— 左值;5、对变量的修改都要通过左值(写入到内存,更新值)参看:《C++面向对象程序设计》3、变量包含两个要素。

2023-09-24 15:37:33 204

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除