- 博客(12)
- 收藏
- 关注
原创 C++中的左值、右值、左值引用、右值引用与std::move
返回左值引用的函数,赋值、下标、解引用和前置递增递减运算符等,都是返回左值表达式的例子,可以将一个左值引用绑定到这类表达式的结果上。返回非引用类型的函数、算术、关系、位以及后置递增递减运算符等,都生成右值,不能将一个左值引用绑定到这类表达式上,但可以将一个const的左值引用或者一个右值引用绑定到这类表达式的结果上。
2025-03-14 16:47:00
617
原创 嵌入式Linux启动流程
Linux系统初始化可以分成两大部分:内核初始化和系统初始化。本文将分析从打开电源开关到进入用户界面Linux系统的工作,主要内容如下: • Linux内核初始化概述; • 进入内核前的工作; • 内核初始化; • 如何进入用户空间;一个典型的Linux系统启动初始化流程图,如图1-1所示。 图 1-1 Linux初始化总体流程 从图1-1可以看出,Linux系统启动流程可以分为3部分:固化在硬件的程序、内核代码部分和用户空间的程序和脚本。
2025-02-10 21:22:33
1071
原创 C++类对象所占空间分析和总结
再说一说类对象。刚才已经看到,无论往类中增加几个虚函数,类对象的sizeof只会增加4个字节。这4个字节的增加,其实是因为虚函数的存在,导致系统。
2025-01-17 09:42:00
1028
原创 C/C++ 符号解析与重定位
由于链接器无法支持一个符号有多个定义,因此g++在编译期间会根据参数列表的不同,对函数符号进行一定的修改,以保证函数符号的唯一性。,这些符号包括带有static修饰的全局函数、带有static修饰的全局变量以及带有static修饰的函数内部的静态局部变量,例如helloworld.c中main函数里的静态局部变量name。对于类的成员函数,g++对其函数符号的修改规则与非类的函数符号的修改规则类似,只不过函数符号的中间多了一个以字母“N”开头的类域修饰,且参数列表的前面多了一个“E”。
2024-11-13 11:22:36
586
原创 Linux动态链接与静态链接(详细介绍动态链接)
因此,在实际开发中,我们通常使用动态链接的方式来避免这些问题。动态链接库是为了解决静态链接库存在的缺点而被提出来的。
2024-11-06 18:03:00
1209
原创 ELF文件概述
ELF头中包含了许多关于ELF文件的信息,其中包括ELF类别、字节序、版本、文件类型、程序入口地址、程序头组大小、节头组大小与个数等信息。除了上面这些关键的节,ELF 文件中还包含其他节,这些节主要用于链接时指导链接器完成链接、程序运行时指导动态链接库完成加载以及提供程序运行时的调试信息。程序头表描述了文件中需要加载到内存的各个段的信息,以支持程序的执行,我们可以使用readelf命令来查看可执行文件 helloworld 的 ELF文件中的程序头组。其中,-l选项表示只查看程序头信息,对应的命令如下。
2024-11-05 17:29:57
1090
原创 C/C++ 编译、链接和运行
文件中的符号和调试信息可以用于调试和分析程序。如果需要生成发布版本的程序,可以使用strip命令删除这些信息,以减小程序的大小。
2024-11-04 16:13:07
1399
1
原创 shell及其shell编程基础介绍
在Linux系统中,默认的shell程序是bourne again shell,简称bash。bash可以接收所有来自终端的输入,并具备命令行解析的功能,在读取到用户的输入后,就可以执行相关的命令。在Linux系统中,bash是最常用的shell程序。shell是解释型语言,不像C/C++语言那样需要经过编译、链接后才可以执行,而是在编写完之后就可以直接在shell中执行。shell免编译的便利性及其与Linux系统良好的契合性,使得它非常适合用来编写一些脚本用于系统维护、系统监控、服务启停等。
2024-10-31 17:53:00
851
原创 *** stack smashing detected ***: terminated 错误
出现*** stack smashing detected ***: terminated报错。可能原因:具有返回值的函数,没有写return,就会导致这样的报错。
2024-10-17 09:26:12
656
原创 Git之回溯代码 ----Reset操作
本人还是喜欢带有图形界面的Git软件,如果你喜欢敲命令行的话请自行查阅reset用来撤销提交、重置分支以及撤销暂存区的更改的重要命令之一。
2024-06-12 17:42:40
323
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人