C++基础知识(四)--重定位、静态链接、动态链接、atomic_flag、指针引用

链接时重定位和装载时重定位

特性链接时重定位装载时重定位
发生时机发生在编译器进行静态链接或动态链接时发生在程序加载到内存并准备执行时
作用将各个目标文件、库文件中的位置无关的代码链接成一个单独的可执行文件或库文件,并对符号进行最终的地址绑定。将可执行文件或共享库中的引用符号和实际地址进行绑定,确保程序能够正确地访问共享库中的函数和数据。
阶段链接阶段装载阶段

静态链接 VS 动态链接

特性静态链接动态链接
生成的文件
独立性独立于系统上已安装的库依赖于系统上已安装的共享库
加载速度较慢
版本更新需要重新编译可以在不重新编译可执行文件的情况下更新共享库
过程在编译时进行链接在运行时进行链接
库的整合静态库的代码和数据整合到可执行文件中共享库的代码和数据在运行时加载到进程内存中
加载可执行文件包含所有的代码和数据可执行文件只包含对库的引用,加载时需要查找并加载依赖的共享库

atomic_flag VS atomic_bool

特性std::atomic_flagstd::atomic
支持的原子操作test_and_set, clear所有原子操作(load, store, exchange, compare_exchange 等)
主要用途通常用于自旋锁等低级同步原语用于需要原子操作的布尔类型场景
复制构造/赋值不支持支持

指针 VS 引用

特征引用指针
别名变量的别名内存地址的变量
初始化必须在定义时初始化可以在任何时候进行初始化
空值不存在空引用可以指向空值(nullptr)
解引用不需要解引用操作需要解引用操作来访问其指向的对象
动态内存管理不能进行动态内存的分配与释放可以进行动态内存的分配与释放
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐怡旸--指针诗笺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值