c++ - 在执行程序时,完整的库是否会加载到内存 (RAM) 中?

标签 c++ c linux

静态库和动态库有何不同?

我了解静态和动态库的创建和使用,但我对将库加载到主内存有疑问。如果我们只从库中调用一个函数,静态/动态库是否会完全加载到 RAM。

例如考虑我们有 10mb 大小的库,我们只调用该库中的一个函数,是加载完整的库还是仅加载被调用的函数对象代码?在静态库和动态库的情况下是否相同?(如果我们使用静态库,可执行文件的大小会更大,但加载时间如何)

提前致谢!

最佳答案

Linux(与所有具有按需分页的现代操作系统一样)将在加载时映射您的整个库,但仅在必须读取的那些页面中进行分页,例如:初始化库,解析所有外部(非延迟)符号.

这些任务主要委托(delegate)给用户模式动态加载器。

您的部分图像从未写入或之后由 KSM(内核同页合并)重新合并,只能存储一次,从而减轻内存压力。

关于c++ - 在执行程序时,完整的库是否会加载到内存 (RAM) 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22868580/

相关文章:

c++ - Magick++ 背景渐变

C 使用 fork() 共享内存

c - 在C语言中,数组的大小在运行时确定?

linux - 设置 karma-cordova (Linux) 时遇到问题

c++ - 如何快速检查(非平凡的)数字列表的等价性?

c++ - 如何使用 CMake 创建具有多个 Visual Studio 项目的 Visual Studio 解决方案?

php - 实时计算特定主题标签的推文数量

C TCP套接字无法接收文件

c - 为什么 select 会导致 cpu 系统负载高?

linux - 网络端口被占用,但没有进程使用它