栈溢出是指函数中的局部变量造成的溢出(注:函数中形参和函数中的局部变量存放在栈上)栈的大小通常是1M-2M,所以栈溢出包含两种情况,一是分配的的大小超过栈的最大值,二是分配的大小没有超过最大值,但是接收的buf比原buf小。函数调用层次过深,每调用一次,函数的参数、局部变量等信息就压一次栈局部变量体积太大。
解决办法大致说来也有两种:
增加栈内存的数目;如果是不超过栈大小但是分配值小的,就增大分配的大小
使用堆内存;具体实现由很多种方法可以直接把数组定义改成指针,然后动态申请内存;也可以把局部变量变成全局变量,一个偷懒的办法是直接在定义前边加个static,直接变成静态变量(实质就是全局变量)