Visual Studio 中的小筹码量
Small Stack Size In Visual Studio
只是好奇,为什么 Visual Studio 中 C++ 的默认堆栈大小只有 1MB?对于现代计算机,1MB 是非常小的。将我的设置更改为 20MB 有问题吗?
即使资源充足,也应该只使用实际需要的。
1MB 对于绝大多数应用程序来说已经足够大了,这使得它成为一个非常合理的默认值。由于某些程序可能需要更多(例如深度递归算法),您可以随意更改程序的默认值。
大多数函数将在堆栈上具有 return 地址、传入的参数(较少一些可能通过寄存器传递的参数)以及函数的局部变量。除非在堆栈上声明大变量 and/or 程序是深度递归的,在典型情况下这将增加几个字节到几 KB。
请记住,在某些系统上可能有 许多 个线程 运行,因此定期分配更大的堆栈可以增加大量资源。
I'm using vectors now but the code that needed more stack space is using a cumbersome recursive algorithm
请记住 any recursive algorithm can be expressed as an iterative algorithm 反之亦然(有时需要用户定义的堆栈结构)。
只是好奇,为什么 Visual Studio 中 C++ 的默认堆栈大小只有 1MB?对于现代计算机,1MB 是非常小的。将我的设置更改为 20MB 有问题吗?
即使资源充足,也应该只使用实际需要的。
1MB 对于绝大多数应用程序来说已经足够大了,这使得它成为一个非常合理的默认值。由于某些程序可能需要更多(例如深度递归算法),您可以随意更改程序的默认值。
大多数函数将在堆栈上具有 return 地址、传入的参数(较少一些可能通过寄存器传递的参数)以及函数的局部变量。除非在堆栈上声明大变量 and/or 程序是深度递归的,在典型情况下这将增加几个字节到几 KB。
请记住,在某些系统上可能有 许多 个线程 运行,因此定期分配更大的堆栈可以增加大量资源。
I'm using vectors now but the code that needed more stack space is using a cumbersome recursive algorithm
请记住 any recursive algorithm can be expressed as an iterative algorithm 反之亦然(有时需要用户定义的堆栈结构)。