基于堆栈的缓冲区溢出怎么解决

1个回答
青岛英茂汇1
2023-03-14 · 专注知识领域问答1。
青岛英茂汇1
向TA提问
展开全部
基于堆栈的缓冲区溢出解决办法:
1,按下键盘Win+R键,打开运行。(如下图所示)
2,输入msconfig,点击确定。(如下图所示)
3,在启动选择中,选择正常启动,点击应用,在点击确定即可。(如下图所示)
堆栈溢出是由这些原因导致的:
1、递归过程的局部变量过多、递归深度过大,是造成系统栈溢出的原因,特别是递归列循环时肯定会发生系统栈溢出。
2、递归堆栈溢出的解决方案是尾部递归优化。事实上,尾部递归和循环具有相同的效果,所以可以把循环看作是一个特殊的尾部递归函数。
3、尾部递归,当函数返回时调用自身,并且返回语句不能包含表达式。通过这种方式,编译器或解释器可以优化尾部递归,这样递归本身无论被调用多少次,都只占用一个堆栈帧,而不会出现堆栈溢出。
4、堆栈溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上,理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下隐患。操作系统所使用的缓冲区又被称为“堆栈”。

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消