【问题标题】:Small Stack Size In Visual Studio [duplicate]Visual Studio中的小堆栈大小[重复]
【发布时间】:2015-07-14 12:21:01
【问题描述】:

很好奇,为什么 Visual Studio for C++ 中的默认堆栈大小只有 1MB?对于现代计算机,1MB 非常小。将我的设置更改为 20MB 有问题吗?

【问题讨论】:

  • 1 MB 通常就足够了。也许你应该重新考虑一些类设计?只是一个猜测,但也许将一些数组变成std::vectors
  • 我现在正在使用向量,但是需要更多堆栈空间的代码使用了繁琐的递归算法。
  • @coustyx 然后将您的递归算法转换为迭代算法。 It is possible 至少,虽然可能很难。
  • 1MB 对于任何人来说都应该足够了。 ??????

标签: c++ visual-studio stack


【解决方案1】:

即使一种资源很丰富,也应该只使用实际需要的量。

1MB 对于绝大多数应用程序来说已经足够大了,这使它成为一个非常合理的默认值。由于某些程序可能需要更多(例如深度递归算法),您可以随意更改程序的默认值。

大多数函数都有堆栈上的返回地址、传入的参数(较少一些可能通过寄存器传递的参数)以及函数的本地变量。除非在堆栈上声明了大变量和/或程序是深度递归的,否则在典型情况下这将增加几个字节到可能几个 KB。

请记住,在某些系统上可能有许多个线程在运行,因此定期分配更大的堆栈可能会增加相当数量的资源。

我现在使用向量,但需要更多堆栈空间的代码使用了繁琐的递归算法

请记住any recursive algorithm can be expressed as an iterative algorithm,反之亦然(有时需要用户定义的堆栈结构)。

【讨论】:

  • 如果您能以某种方式说明为什么 1MB 就足够了,这将是一个更好的答案。
  • 添加了一些推理,说明为什么 1MB 对于大多数程序来说可能已经足够了。
  • 谢谢!这很有帮助,这只是一个解决 Project Euler 问题的程序,所以我懒得考虑制作自己的数据结构。
  • 您可以随时为自己的程序增加堆栈大小。
猜你喜欢
  • 2019-05-27
  • 2012-07-24
  • 2020-08-28
  • 2016-02-13
  • 2012-09-23
  • 2012-12-14
  • 2021-04-07
  • 2019-07-10
相关资源
最近更新 更多