假设我有一个包含 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_d(来自 D)和 foo_e(来自 E)的函数 foo_b
如果我调用函数 A.foo_a ,堆栈大小是多少?如果我直接调用 E.foo_e 会一样吗?
最佳答案
手动启动的线程(使用 CreateThread)可以从函数调用的参数中获取自定义大小,主线程的堆栈大小根据来自 EXE 的信息设置。
你的五个 DLL 根本不重要。
它们可以由链接器在其文件头中设置自定义大小,
但操作系统不会用它做任何事情。
(运行时堆栈大小(在 Windows 上)是每个线程,而不是每个文件。)
关于c++ - 多个 vs 项目中的堆栈大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24173160/