静态库与动态库

在 C/C++ 开发中,静态库(Static Library)和动态库(Dynamic Library,又称共享库 Shared Library)是两种代码复用和模块化开发的两种重要方式,核心区别在于链接时机和内存 / 磁盘使用方式。

一、核心定义与本质区别

img

二、内存与磁盘占用

  • 静态库:每个使用静态库的可执行文件都会包含库的完整代码,导致:
    • 磁盘上:多个程序占用重复空间(如 10 个程序使用 1MB 静态库,总占用 10MB)。
    • 内存中:多个程序运行时,各自加载一份库代码(重复占用内存)。
  • 动态库:库代码仅在磁盘上存储一份,内存中也仅加载一次,供所有程序共享:
    • 磁盘上:10 个程序使用 1MB 动态库,总占用仅 1MB。
    • 内存中:所有程序共享同一份库代码(操作系统通过内存映射实现)。

三、程序启动速度

  • 静态库:
    • 程序启动快,因为所有代码已包含在可执行文件中,无需运行时加载外部库。
  • 动态库:
    • 程序启动稍慢,因为需要在运行时加载动态库并解析引用(但现代操作系统会优化加载速度,差距通常不明显)。

四、总结对比表

img

posted @ 2025-10-14 22:33  开心猪扒  阅读(11)  评论(0)    收藏  举报