堆栈溢出在C编程中的意义 [英] Meaning of a stack overflow in C programming

查看:14
本文介绍了堆栈溢出在C编程中的意义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

代码如下:

#‎include ‬<stdio.h>

int main()
{
  printf("Stack Overflow");
  main();
}
在编译和执行此程序后,它将打印"Stack Overflow",直到它的堆栈溢出。在这里,我知道堆栈溢出是什么意思,这意味着它将打印到内存满为止。我的问题是,这是哪种记忆?溢出的堆栈的大小是多少?

推荐答案

是哪个内存?

它是堆栈内存,即程序在函数调用期间用来存储有关返回到哪里的信息的堆栈内存。每次调用函数时,CPU都会将当前正在执行的内容的位置保存到堆栈中,然后跳转到新函数。当函数完成时,它将该位置从堆栈中弹出,在那里返回。这就是递归成为可能的原因。

溢出的堆栈大小是多少?

堆栈的实际大小完全取决于平台。许多操作系统倾向于将堆栈的大小限制在几兆字节,但允许更改该大小。如果系统耗尽了虚拟内存,这也会限制堆栈大小。一些(更老的)CPU具有固定大小的堆栈(英特尔8008只有7个堆栈条目)。

这篇关于堆栈溢出在C编程中的意义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆