加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 谁将堆分配给DLL?

发布时间:2020-12-14 04:02:20 所属栏目:Windows 来源:网络整理
导读:假设我开发了一个DLL,比如1.dll使用MS visual studio 2005/2008,然后我将这个DLL链接到一个控制台应用程序,比如说1.exe,在加载时(使用头文件和.lib文件)然后在DLL里面,如果我在运行时分配内存,那么谁将堆(免费存储)分配给DLL. 据我所知,DLL使用进程的地址空
假设我开发了一个DLL,比如1.dll使用MS visual studio 2005/2008,然后我将这个DLL链接到一个控制台应用程序,比如说1.exe,在加载时(使用头文件和.lib文件)然后在DLL里面,如果我在运行时分配内存,那么谁将堆(免费存储)分配给DLL.

据我所知,DLL使用进程的地址空间来存储数据,代码和堆栈.

解决方法

当你创建一个Dll – 你总是用某种语言编写它 – 在你的情况下使用Visual Studio 2005或2008进行编写.

在这种情况下,C运行时负责创建其freestore并决定如何分配它.

具体来说,如果你使用Dll运行时选项,那么一个单独的dll – msvcrtxx.dll – 管理一个单独的freestore,它在所有dll和exe之间共享,与该dll链接.

如果在使用exe和dll时使用静态运行时选项,那么exe和每个dll都会获得自己的libc实例,并具有自己的freestore管理.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读