重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
for(i=1;i=9;i++)
成都创新互联公司长期为近千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为七星关区企业提供专业的网站制作、成都做网站,七星关区网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。
数组的下标是从0开始的,i--后就会出现负数啊,可定越界
是不是调用函数的形参过多?一般来说,函数的参数都存在栈中,当然也可以申请堆。如果形参过多就会发生栈溢出,用递归的时候发生较多。栈溢出会发生段错误,也就是可能会占用系统的栈(好像不能访问)。。。
错了给我说……
使用堆空间,所有指针、内存都从堆上分配,只要你主机内存够,就不会溢出!
分配的变量char
c;是字符型,但输入的是%s字符串,这里会导致溢出。
栈溢出一般和操作指针有关系(包括本质上是指针的各种形式),比如调用不定变量个数的函数时(像printf、scanf这种),没有按约定传入适当的参数个数;函数操作传入的数组下标越界等;得到指向局部变量的指针后,做不合适的偏移操作。以上这些都有可能造成栈溢出。
char ta[4500],tb[4500],op,temp[9]; //ta临时储存a,tb临时储存b
这句temp[9]改为temp[10] ,9个保存读出的值,还有一个要放’\0'
这里下标越界好多,那个提示不是栈溢出的,是你访问下标越界了,
for(i=0;i=1001;i++){c[i]=pre;} 这里还有个也是越界了,应该到1000