使用全栈内存
Using whole stack memory
您好,我听说在 C++ 中堆栈内存被用于“普通”变量。我如何使堆栈满?我尝试使用大量数组,但没有帮助。堆栈有多大,它位于何处?
C++ 语言没有指定诸如“堆栈”之类的东西。它是一个实现细节,因此除非我们正在讨论 C++ 的特定实现,否则仔细考虑它是没有意义的。
但是,在典型的 C++ 实现中,自动变量存储在执行堆栈中。
How do I make stack full?
第 1 步:使用具有有限堆栈大小的语言实现。这很常见。
第2步:创建超过限制的自动变量。或者嵌套过多的非尾递归函数调用。运气好的话,程序可能会崩溃。
您不希望堆栈在生产使用中耗尽。
How big is stack
取决于语言实现。它甚至可以是可配置的。在常见的 desktop/server 系统上,默认值为一到几兆字节。嵌入式系统较少。
and where is it located?
内存中已选择语言实现的某处。
最重要的是自动变量可用的内存通常是有限的。因此:
- 不要使用大的自动变量。
- 当深度的渐近增长是线性或更差时,不要使用递归。
- 不要让用户输入无限制地影响自动变量的数量或大小或递归的深度。
Hello I heard that in c++ stack memory is being used for "normal" variables.
在函数或 main 中声明的局部(自动)变量主要在堆栈(或寄存器)上分配内存,并在执行完成时释放。
How do I make stack full? I tried to use ton of arrays but it didnt help.
使用大量数组、许多递归调用、传递包含大量数组的大型结构的参数都是方法。另一种方法也可能是减少堆栈大小:-Wl,--stack,number (for gcc)
How big is stack and where is it located?
这取决于平台、操作系统等。标准不决定任何筹码量。它的位置由程序启动前的OS确定。 OS 从虚拟内存中为堆栈分配内存。
您好,我听说在 C++ 中堆栈内存被用于“普通”变量。我如何使堆栈满?我尝试使用大量数组,但没有帮助。堆栈有多大,它位于何处?
C++ 语言没有指定诸如“堆栈”之类的东西。它是一个实现细节,因此除非我们正在讨论 C++ 的特定实现,否则仔细考虑它是没有意义的。
但是,在典型的 C++ 实现中,自动变量存储在执行堆栈中。
How do I make stack full?
第 1 步:使用具有有限堆栈大小的语言实现。这很常见。
第2步:创建超过限制的自动变量。或者嵌套过多的非尾递归函数调用。运气好的话,程序可能会崩溃。
您不希望堆栈在生产使用中耗尽。
How big is stack
取决于语言实现。它甚至可以是可配置的。在常见的 desktop/server 系统上,默认值为一到几兆字节。嵌入式系统较少。
and where is it located?
内存中已选择语言实现的某处。
最重要的是自动变量可用的内存通常是有限的。因此:
- 不要使用大的自动变量。
- 当深度的渐近增长是线性或更差时,不要使用递归。
- 不要让用户输入无限制地影响自动变量的数量或大小或递归的深度。
Hello I heard that in c++ stack memory is being used for "normal" variables.
在函数或 main 中声明的局部(自动)变量主要在堆栈(或寄存器)上分配内存,并在执行完成时释放。
How do I make stack full? I tried to use ton of arrays but it didnt help.
使用大量数组、许多递归调用、传递包含大量数组的大型结构的参数都是方法。另一种方法也可能是减少堆栈大小:-Wl,--stack,number (for gcc)
How big is stack and where is it located?
这取决于平台、操作系统等。标准不决定任何筹码量。它的位置由程序启动前的OS确定。 OS 从虚拟内存中为堆栈分配内存。