当前位置: 首页 > news >正文

C++基础知识(四)

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

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

静态链接 VS 动态链接

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

atomic_flag VS atomic_bool

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

指针 VS 引用

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

http://www.mrgr.cn/news/17900.html

相关文章:

  • Python入门了解(一)
  • eureka一
  • 再获认可!海云安荣登2024中国网络安全市场100强榜单
  • 【类模板】类模板的基本范式
  • 超越卷积滤波器,HyCoT利用Transformer捕捉高光谱图像的全局依赖性 !
  • leetcode209. Minimum Size Subarray Sum
  • Spring扩展点系列-InstantiationAwareBeanPostProcessor
  • 原码 / 反码 / 补码的介绍及认知
  • Python测试开发基础(三)---random模块
  • SQLi-LABS靶场56-60通过攻略
  • 【网络基础】探索 NAT 技术:IP 转换、NAPT、NAT穿越及代理服务器
  • Windows 11家庭中文版中管理员阻止运行应用程序的问题
  • C++第四十四弹---Lambda表达式的妙用:高效解决编程中的匿名函数问题
  • 去中心化身份验证:Web3时代数字身份的革新
  • Python测试开发基础(一)
  • Ascend显卡创建虚拟vgpu实例
  • 安防监控视频打手机检测算法核心技术打手机检测算法源码、模型简介
  • C++多线程
  • 云原生主键模型:高效、弹性,省钱又省心
  • Oracle rac模式下undo表空间爆满的解决