好奇,为什么Visual Studio for C ++中的默认堆栈大小只有1MB?使用现代计算机,1MB非常小。将我的设置更改为20MB是否有问题?
答案 0 :(得分:2)
即使资源充足,也应该只使用实际需要的资源。
对于绝大多数应用程序来说,1MB是非常大的,这使得它成为一个非常合理的默认设置。由于某些程序可能需要更多(例如深度递归算法),您可以自由更改程序的默认值。
大多数函数都有堆栈上的返回地址,传入的参数(少于可能通过寄存器传递的参数),以及函数本地的变量。除非在堆栈上声明大变量和/或程序是深度递归的,否则在典型情况下这将增加几个字节到几KB。
请记住,在某些系统上可能会运行许多线程,因此例行分配更大的堆栈可能会增加大量资源。
我现在使用向量,但需要更多堆栈空间的代码使用繁琐的递归算法
请记住any recursive algorithm can be expressed as an iterative algorithm,反之亦然(有时需要用户定义的堆栈结构)。