百度
360搜索
搜狗搜索

linux动态库会被多次加载吗详细介绍

在 Linux 系统里,动态库是否会被多次加载取决于具体情形。下面为你详细介绍:

同一进程内

在同一个进程中,动态库通常仅会被加载一次。当进程首次调用dlopen函数(用于加载动态库)或者在程序启动时链接动态库,系统会将动态库加载到内存里,同时为其创建一个副本,之后该进程内的所有代码都会共享这个副本。即便后续再次调用dlopen尝试加载相同的动态库,系统也不会再次把该库加载到内存中,而是直接返回已加载库的句柄。

下面是一个简单示例,借助dlopen函数来加载动态库:
c

 

handle1 RTLD_LAZY

handle1

handle2 RTLD_LAZY

handle2

handle1 handle2

handle1

handle2

在这个示例中,尽管调用了两次dlopen来加载相同的动态库libexample.so,但实际上该库仅被加载了一次,两次调用返回的句柄是相同的。

不同进程间

不同进程加载动态库时,每个进程都会独立地将动态库加载到自身的地址空间中。也就是说,每个进程都有一份动态库的副本,各个进程间的副本互不干扰。

总结

  • 同一进程内,动态库一般仅加载一次,所有代码共享该副本。
  • 不同进程间,每个进程都会独立加载动态库,各自拥有一份副本。

阅读更多 >>>  为什么直播软件加载不了
← 上一篇: 下一篇:

网站数据信息

"linux动态库会被多次加载吗"浏览人数已经达到22次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:linux动态库会被多次加载吗的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!