静态库和动态库有何不同?
我了解静态和动态库的创建和使用,但我对将库加载到主内存有疑问。如果我们只从库中调用一个函数,静态/动态库是否会完全加载到 RAM。
例如考虑我们有 10mb 大小的库,我们只调用该库中的一个函数,是加载完整的库还是仅加载被调用的函数对象代码?在静态库和动态库的情况下是否相同?(如果我们使用静态库,可执行文件的大小会更大,但加载时间如何)
提前致谢!
最佳答案
Linux(与所有具有按需分页的现代操作系统一样)将在加载时映射您的整个库,但仅在必须读取的那些页面中进行分页,例如:初始化库,解析所有外部(非延迟)符号.
这些任务主要委托(delegate)给用户模式动态加载器。
您的部分图像从未写入或之后由 KSM(内核同页合并)重新合并,只能存储一次,从而减轻内存压力。
关于c++ - 在执行程序时,完整的库是否会加载到内存 (RAM) 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22868580/