假设我开发了一个DLL,比如1.dll使用MS visual studio 2005/2008,然后我将这个DLL链接到一个控制台应用程序,比如1.exe,在加载时(使用头文件和.lib文件)然后在DLL里面时,如果我在运行时分配内存,那么谁将堆(免费存储)分配给DLL.
据我所知,DLL使用进程的地址空间来存储数据,代码和堆栈.
当你创建一个DLL - 你总是用某种语言编写它 - 在你的情况下使用Visual Studio 2005或2008 C++.
在这种情况下,C++运行时负责创建其freestore并决定如何分配它.
具体来说,如果你使用Dll运行时选项,那么一个单独的dll - msvcrtxx.dll - 管理一个单独的freestore,它在所有dll和exe之间共享,与该dll链接.
如果在使用exe和dll时使用静态运行时选项,那么exe和每个dll都会获得自己的libc实例,并具有自己的freestore管理.