莫议他事,只谈技术!

1.为什么栈会溢出?

——我举了个例子比如整形的数大小是有上限的,如果定义了比最大值大的数赋给了整形变量,此时就会越界。

【百度百科】:堆栈溢出就是不顾堆栈中分配的局部数据块大小,向该数据块写入了过多的数据,导致数据越界,结果覆盖了老的堆栈数据。举例如下:

int main(){    char name[8];     printf("Please type your name:");    gets(name); //如果输入name="aaaaaaaaaaaaaaaaaaaaaaaaaaaa"就会导致栈溢出。    printf("Hello.%s!",name);     return 0;}

最好能提到原因:死循环似的递归, 没有或者不可能到达结束条件, 同时在堆栈中保存参数,局部变量等等,最后


收藏 打印