如果包含映射的静态库与可执行文件和动态库链接,静态映射(变量)是否会被多次释放?

Will static map(variables) be freed multiple times if the static library which contains the map is linked with executable and dynamic library?

本文关键字:静态 映射 是否 变量 释放 链接 包含 可执行文件 如果 动态      更新时间:2023-10-16

我们有一个在静态库中定义的静态映射。

此静态库链接到动态库。

可执行文件链接静态库以及上述动态库。

两个问题?

a( 静态库代码是否重复?

b( 静态库中定义的静态映射是否会有多个副本?(这会导致在可执行文件退出时崩溃吗(

静态库在编译时链接,而动态库在运行时链接。也就是说,每段编译的代码都必须包含静态库 - 有问题的库将静态链接到.exe和.dll。

也就是说,编译 DLL 时,它会接收自己的链接和相关静态库的副本。使用静态库的可执行文件在编译时也会接收自己的静态库副本。

因此,.dll 和 .exe 都将运行自己单独的静态库实例。因此,在.exe中使用静态库创建的任何变量都将独立于.dll中创建的变量,并且不会释放,因为两个副本不会交互。