C语言调用函数时,什么情况会出现栈溢出,栈溢出会出现什么结果

Python012

C语言调用函数时,什么情况会出现栈溢出,栈溢出会出现什么结果,第1张

是不是调用函数的形参过多?一般来说,函数的参数都存在栈中,当然也可以申请堆。如果形参过多就会发生栈溢出,用递归的时候发生较多。栈溢出会发生段错误,也就是可能会占用系统的栈(好像不能访问)。。。

错了给我说……

char ta[4500],tb[4500],op,temp[9] //ta临时储存a,tb临时储存b

这句temp[9]改为temp[10] ,9个保存读出的值,还有一个要放’\0'

这里下标越界好多,那个提示不是栈溢出的,是你访问下标越界了,

for(i=0i<=1001i++){c[i]=pre} 这里还有个也是越界了,应该到1000

修正两个错误即可:

1、fun函数里面两个for循环控制变量有问题,应改为下面这种形式:

for(i=0i<2i++)

for(j=0j<Mj++)

{

if(a[i][j]>max)

max=a[i][j]

}

2、输出的时候也有问题,fun函数返回值是int,所以应该是:

printf("\nThe value of function is:%d\n",fun(arr));

扩展资料:

Runtime Error错误解析

1、buffer overflow

缓冲区溢出,缓冲区溢出一般就是你的程序中数组开小了,产生了越界访问,比如:定义int a[100]

此时你引用了a[1000]就很可能出现运行时错误。“缓冲区”一般指的就是程序中定义的一个数组,这片连续的内存空间用以存放一些要处理的数据。

值得一提的是缓冲区溢出漏洞就连成熟的程序员都有可能不小心忽视它导致巨大的损失,所以现在写代码一定要养成深思熟虑,考虑好每一个值的范围,以防越界。之所以存在缓冲区溢出漏洞,一个主要的原因是C语言并不对数组下标进行界限检查。

2、stack overflow栈溢出

栈这个东西在操作系统中通常用来维护一个函数的调用,C语言中在调用函数的时候会依懒一个“栈”这种数据结构的性质的内存。