多个项目中的堆栈大小

时间:2014-06-11 21:47:43

标签: c++ visual-studio stack stack-size

假设我有一个包含5个项目A,B,C,D和E的C ++ Visual Studio解决方案。项目已将/ STACK链接器选项设置为:

  • A = 4MB
  • B =空(默认为1MB)
  • C =空(默认为1MB)
  • D = 16MB
  • E = 25MB

所有这些都是作为具有公开函数的单独DLL构建的。项目:

  • A包含一个函数foo_a,它调用foo_b(来自B)和foo_c(来自C)
  • B包含函数foo_b,它调用foo_d(来自D)和foo_e(来自E)

如果我调用函数A.foo_a,那么堆栈大小是多少?如果我直接打电话给E.foo_e会不一样?

1 个答案:

答案 0 :(得分:1)

手动启动的线程(使用CreateThread)可以从函数调用的参数中获取自定义大小,主线程的堆栈大小是根据EXE的信息设置的。

你的五个DLL根本不重要。
它们可以由链接器在其文件头中设置自定义大小,
但操作系统不会对它做任何事情。

(运行时堆栈大小(在Windows上)是每个线程,而不是每个文件。)