EXE或DLL是否拥有移动的内存?

时间:2018-11-10 03:30:12

标签: c++ windows

在Windows 10,Visual Studio 2017中,我有一个EXE,可在运行时动态加载DLL。它们都是用C ++编写的。

一旦加载了DLL,EXE就会在DLL中调用工厂函数。此工厂函数返回std :: unique_ptr

// Function in the DLL.
std::unique_ptr<T> factory() {
   return std::make_unique<DerivedT>();
}

一旦EXE收到std :: unique_ptr,此内存将驻留在哪里?是在DLL的堆中还是在EXE的堆中?可以安全地卸载DLL,并且EXE保留内存并在以后引用该内存吗?

我已经做了一个简单的测试(在一个较大的程序中),似乎可以卸载DLL而不会丢失内存(我只保留了很短的时间)。不过,我不确定自己是否很幸运,这实际上是非法的。

0 个答案:

没有答案