我正在使用Visual C ++。我有一个库的源代码,称之为Lib。该库由.lib和.dll组成。我静态地链接我的主项目中的.lib,并将.dll放在有可执行文件的目录中。我在主项目中分配一些内存(即将文件加载到内存中),将其传递给.dll的对象来构造它,当程序退出时,对象调用该内存上的delete。
它似乎有效,但我不确定。我关心的是我在主项目中分配内存并在.dll中取消分配内存。它们在同一堆上吗?
答案 0 :(得分:0)
只要您使用内存分配运行时链接到共享的MSVC库,它就可以正常工作。然后EXE和DLL共享同一个堆。
如果你破坏了这种依赖关系,将不再共享堆,删除不同堆中的对象将破坏应用程序。