cpp 类是否动态加载

Are cpp classes dynamically loaded?

本文关键字:加载 动态 是否 cpp      更新时间:2023-10-16

我知道JVM有一个单独的类加载器,这是加载类和执行它们的默认运行时方法。我只想知道类加载如何适用于 cpp。cpp 中的类加载是否与操作系统中的动态加载有些关系。如果类不是动态加载的,我想就不需要堆分配了。但是 cpp 显然有 free() 内存选项。我有点困惑。它究竟是如何工作的?

编辑:我理解为什么对象初始化需要堆。但是我不清楚类本身的静态或动态加载的原因,尤其是 cpp 的方式。

No.
一旦代码被编译成可执行文件,就没有类、对象、方法等:只有字节和机器指令。

动态

内存与动态类加载无关。"动态"内存意味着内存的大小在编译时不一定是已知的,可能只在运行时知道,具有更改和调整大小的能力,因此是"动态的"。同样,这是使用不了解类的机器指令实现的。

唯一类似于"类加载"的是DLL加载。DLL 是编译的代码,它导出函数供其他程序使用。
可以在运行时加载和卸载 DLL。同样,这些导出的功能已经是机器指令。