发布网友 发布时间:2022-04-22 06:08
共1个回答
热心网友 时间:2023-09-09 00:32
常言所说的堆栈溢出,就是指栈溢出。使用
malloc();
函数是动态分配内存堆区的空间,一般的程序如没用这个,就不存在堆溢出。栈溢出:
栈空间是预设的,它通常用于存放临时变量,如果你在函数内部定义一个局部变量,空间超出了设置的栈空间大小,就会溢出。不仅如此,如果函数嵌套太多,也会发生栈溢出,因为函数没有结束前,函数占用的变量也不被释放,占用了栈空间。解决办法:恰当的设置栈空间大小。分析代码,评估在哪个环节,使用的临时变量字节数最大,所设置的栈空间必须大于此。也可以将大的变量在全局进行定义,它就不占用栈区空间。