c++ - 多个 vs 项目中的堆栈大小

标签 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_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/

相关文章:

c++ - 计算大小增加的 vector 的平均值

java方法返回类型

c - 在 C 编程中将 .h 文件实现到 main()

c++ - 如何在C/C++中输出unicode字符

c++ - 尝试在 map 中查找元素时出错

visual-studio - Visual Studio错误: An item with the same key has already been added

c++ - 使用 Visual Studio 或 MingW 从 Unix 移植代码?

c - 为什么这段代码可以从返回地址中得到函数地址呢?

c++ - 在单眼视觉里程计中使用 3d-2d 运动估计的相机位置

c++ - 删除结构数组时 VS 2010 C++ 崩溃