【问题标题】:Stack/Heap differences between .NET EXEs and DLLs.NET EXE 和 DLL 之间的堆栈/堆差异
【发布时间】:2011-04-17 09:26:20
【问题描述】:

这个问题我困惑了很久:

.NET EXE 和 DLL 文件都有地址空间。我知道它们都有代码空间和全局变量空间。但我想知道 DLL 是否有自己的堆和堆栈空间。

【问题讨论】:

  • DLL 不能有堆栈空间,因为它们没有线程。从 DLL 执行的代码在调用进程的上下文中运行,并且在该进程的线程上运行,从而将内存分配本地化给您的应用程序,而不是 DLL。
  • @cody 当然,DLL 可以创建线程

标签: c# .net windows dll


【解决方案1】:

进程拥有堆。每个线程都拥有自己的堆栈。当 EXE 调用 DLL 中的函数时,会使用相同的堆栈,因为函数调用在同一个线程中。

需要说明的另一点是该进程具有加载 EXE 和 DLL 的地址空间。

【讨论】:

    【解决方案2】:

    阿法伊克,

    EXE:

    • 它是一个可执行文件。
    • 当系统启动新的 exe 时,会创建一个新进程

    动态链接库

    • 它是一个动态链接库。

    在这里查看更多信息:Differences between exe and dll

    【讨论】:

    • 当这个答案甚至没有尝试回答这个问题时,它是如何获得支持的?你要多看标题:“但是我想知道这个dll有没有堆空间和栈空间。”
    猜你喜欢
    • 2014-05-27
    • 2012-01-29
    • 2015-07-04
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多