在下面的代号中
#?include ?<stdio.h>
int main()
{
printf("Stack Overflow");
main();
}
Run Code Online (Sandbox Code Playgroud)
运行后,该程序编译器将打印"堆栈溢出"到栈overflow.Here我知道堆栈溢出意味着,这意味着它会打印,直到内存full.Here我的问题是它的内存是什么呢?堆栈的大小是多少?
它的记忆力是什么?
它是堆栈内存,即程序在函数调用期间用于存储有关返回位置的信息的内存.每次调用函数时,CPU都会将当前正在执行的内容的位置保存到堆栈中,然后跳转到新函数.完成该功能后,它会将该位置弹出堆栈并返回该位置.这就是使递归成为可能的原因.
堆栈的大小是多少?
堆栈的实际大小完全取决于平台.许多操作系统倾向于将堆栈的大小限制为几兆字节,但允许更改该大小.如果系统用完虚拟内存,这也会限制堆栈大小.一些(很多)较旧的CPU具有固定大小的堆栈(Intel 8008仅具有7个堆栈条目).