将多少堆栈存储器分配给程序

时间:2015-02-28 11:43:43

标签: c++ visual-c++ dll operating-system computer-science

我有一个程序,它有4个项目作为依赖项(这意味着它必须加载4个dll来运行该程序)。操作系统是否分配4个堆栈内存或者只为整个程序分配1个堆栈内存以及如何将为程序分配多少堆栈内存大小?

1 个答案:

答案 0 :(得分:3)

一切都取决于!您的项目可以是独立的应用程序或库:

  • 每个独立应用程序都有自己的堆栈
  • 库将链接到应用程序,并且没有自己的堆栈

DLL是动态链接的库,因此它们遵循库和don't have their own stack的原则。

然而,

应用程序可以有多个线程(例如,在不同线程的库中公开的运行函数)。每个帖子都有own stack

使用Windows,可执行文件头中指定了default stack size。链接器使用的默认堆栈保留大小为1 MB。在其他操作系统上查看此SO question的堆栈默认值。

请注意,程序中的线程数是动态的:您的程序可以随时使用标准C ++库或OS调用来创建或终止它们。但是如果你的代码使用了这个,你会发现。如果您的应用程序启动了某些流程,则同样适用于流程。

相关问题