cpp 类是否动态加载
Are cpp classes dynamically loaded?
我知道JVM有一个单独的类加载器,这是加载类和执行它们的默认运行时方法。我只想知道类加载如何适用于 cpp。cpp 中的类加载是否与操作系统中的动态加载有些关系。如果类不是动态加载的,我想就不需要堆分配了。但是 cpp 显然有 free() 内存选项。我有点困惑。它究竟是如何工作的?
编辑:我理解为什么对象初始化需要堆。但是我不清楚类本身的静态或动态加载的原因,尤其是 cpp 的方式。
No.
一旦代码被编译成可执行文件,就没有类、对象、方法等:只有字节和机器指令。
内存与动态类加载无关。"动态"内存意味着内存的大小在编译时不一定是已知的,可能只在运行时知道,具有更改和调整大小的能力,因此是"动态的"。同样,这是使用不了解类的机器指令实现的。
唯一类似于"类加载"的是DLL加载。DLL 是编译的代码,它导出函数供其他程序使用。
可以在运行时加载和卸载 DLL。同样,这些导出的功能已经是机器指令。
相关文章:
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 在 Linux 平台的 C++ 中动态加载 DLL
- 在Qt C++单元测试中动态加载QQuickWindow而不是QQuickWidget
- 使用动态链接加载程序 <dlfcn.h> 而不是直接函数调用的目的是什么?
- 从 C 可执行文件加载动态库时收到错误C++"undefined symbol"
- 从动态加载的 dll 内部调用C++函数
- 使用CFBundleCreate在C++中的Mac上加载动态共享库(DLL)
- C/C++函数动态加载器(helper)
- 地址清理器和运行时加载动态库 ->(<未知模块>)
- 从zip、内存等加载动态库
- 我们可以在链接期间加载动态库吗
- 从内存加载动态库
- 加载动态链接库的第三种方法?大头针
- 以下代码是如何工作的(从DLL加载动态类)
- 通过链接到静态库加载动态库
- 在 Mac 中加载动态库路径错误
- 如何避免在c++项目(XCode)中在其他机器上加载动态库
- 无法在运行时加载动态共享库,包括C++中的另一个共享库
- 无法加载动态库/usr/lib/OGRE/RenderSystem_GL
- 是否有任何链接器标志告诉在打开后延迟加载动态库