stackoverflow什么是stack overflow

stackoverflow  时间:2021-07-01  阅读:()

电脑出现 “stack overflow at line 1” 如何解决?

此问题为IE错误的问题,出现这种问题应排除其他的原因如病毒和硬件的故障,还有浏览器损坏或文件丢失,其次主要是IE核心的某些DLL文件在注册表中的条目丢失或有错。

这类问题一般由于安装了某些软件引起的。

特别是一些设计的不规范的软件,要解决应使用regsvr32命令: 在运行中分别输入 : regsvr32 actxprxy.dll regsvr32 shdocvw.dll 这样就重新注册了这两个dll文件,完成后重启电脑。

如还有故障也可以把以下几个dll文件也重新注册一次,一般问题可以解决。

regsvr32 mshtml.dll regsvr32 urlmon.dll regsvr32 msjava.dll regsvr32 browseui.dll

如何解决VS代码调试时出现 Stack overflow

在编有递归代码的VS、VC程序中可能会引起栈溢出错误,其实代码本身并没有出错,只是系统分配的栈内存不满足程序需要。

错误提示如下: First-chance exception at 0x00AFE289 in 边缘检测方法.exe: 0xC00000FD: Stack overflow (parameters: 0x00000001, 0x00F92FEC). If there is a handler for this exception, the program may be safely continued. 工具/原料 VS2013 方法/步骤 打开出现栈溢出错误的工程文件,单击下图中的调试运行按钮 运行后会弹出如下的栈溢出错误窗口,单击“break",即中断执行 中断执行后会跳转到出现错误的代码段,即引起栈溢出的地方。

此时打开栈的调用窗口可以发现代码调用的栈太大了,超过了系统默认给定的容量。

打开此工程的属性页面,找到”Link“——”System“, 在栈的调用尺寸中填写一个较大的值,比如1000000,如果还不够就再加大点,应用并退出设置。

再次编译运行代码,栈溢出错误即可以解决了。

我的输出结果如下所示。

什么是stack overflow

顾名思义,stack overflow 就是是栈溢出了。

在进行数值运算时,我们常常要和运算结果的溢出打交道。

数值运算结果可能上溢(overflow),也可能是下溢(underflow)。

不过栈的溢出显然只可能是上溢,即栈空间被用完了。

在提起“栈”(stack)这个概念的时候,千万不要忘记了它的兄弟“堆”(heap),也要切记不要把二者搞混了。

那么,什么时候会把给用完了呢?如果我们记得C程序中的局部变量是在栈中分配的,函数调用会占用一部分栈空间,则可以很容易地构造出相应的测试用例。

1、定义占用空间过大的局部变量所导致的栈溢出 C:> more stack_local.c /* * Allocate too much memory from stack will cause stack overflow. */ #include <stdio.h> int main(int argc, char *argv[]) { int foo[1000000]; return 0; } C:> cl stack_local.c Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. stack_local.c Microsoft (R) Incremental Linker Version 8.00.50727.42 Copyright (C) Microsoft Corporation. All rights reserved. /out:stack_local.exe stack_local.obj C:> stack_local 此时出现一个异常对话框:stack-local.jpg 。

2、函数递归调用导致的栈溢出 C:> more stack_recursive.c /* * Infinite recursive calls will lead to stack overflow soon. */ #include <stdio.h> static void foo(void); static void bar(void); int main(int argc, char *argv[]) { foo(); return 0; } static void foo(void) { bar(); } static void bar(void) { foo(); } C:> cl stack_recursive.c Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. stack_recursive.c Microsoft (R) Incremental Linker Version 8.00.50727.42 Copyright (C) Microsoft Corporation. All rights reserved. /out:stack_recursive.exe stack_recursive.obj C:> stack_recursive 该程序没声没息就结束了。

查看进程返回值能发现它其实是异常终止了。

只不过没有像 stack_local 那样弹出一个对话框。

C:> echo %errorlevel% -1073741819 要搞清楚这两个程序为什么有这点细微的区别,可以查阅一下二者的汇编代码。

原来是 _chkstk() 在起作用,其中 stack_local 在程序初始加载时就会导致 _chkstk() 失败,触发异常。

而 stack_recursive 可以正确加载,并运行一段时间,然后导致栈溢出,并触发异常。

要正确处理栈溢出采用以下办法: (1)修正我们的程序,不要造成无穷递归或太深的递归。

我们可以把某些递归代码非递归化,例如那个经典的 qsort ,最好就用非递归的算法来实现,就比较皮实一点。

(2)修正我们的程序,不要定义过大的局部变量,特别是在定义大结构、大数组时要格外小心。

有时我们可能会用 _alloca() 这样的特殊函数直接在栈上分配空间,更要多加注意。

(3)利用编译器的特性,将进程允许的栈大小设置得大一些。

例如可以采用 MSC 中的 /STACK 参数开关。

(4)对于那些还可能导致栈溢出的代码,采用 Microsoft 的结构化异常处理或标准的 C++ 异常处理机制,结合 _resetstkoflw() 进行处理。

当然了,要是不嫌麻烦,我们也可以自己探测所用栈的大小,动态地检测是否可能导致栈溢出,以避免可能的异常。

ThomasHost(月付5美元)美国/法国/英国/加拿大KVM,支持Windows

ThomasHost域名注册自2012年,部落最早分享始于2016年,还算成立了有几年了,商家提供基于KVM架构的VPS,数据中心包括美国、法国、英国、加拿大和爱尔兰等6个地区机房,VPS主机套餐最低2GB内存起步,支持Windows或者Linux操作系统,1Gbps端口不限制流量。最近商家提供了一个5折优惠码,优惠后最低套餐月付5美元起。下面列出部分套餐配置信息。CPU:1core内存:2GB硬...

CYUN专注海外精品服务器资源 国庆钜惠 最低5折起 限量促销

国庆钜惠 最低5折起 限量促销CYUN专注海外精品服务器资源,主营香港CN2 GIA、美国CERA、美国高防服务器资源,实体公司,ISP/IDC资质齐全,客服配备齐全。本次针对国庆推出非常给力的促销活动,旗下所有平台同享,新老客户同享,限时限量,售完截止。活动截止时间:2021年10月9日官网地址:www.cyun.net参与机型:香港CN2 GIA云服务器、香港双程CN2云服...

阿里云香港 16核32G 20M 999元/月

阿里云香港配置图提速啦是成立于2012年的十分老牌的一个商家这次给大家评测的是 阿里云香港 16核32G 20M 这款产品,单单说价格上就是十分的离谱原价8631元/月的现价只要 999元 而且还有个8折循环优惠。废话不多说直接进入正题。优惠时间 2021年8月20日-2021年9月20日 优惠码 wn789 8折优惠阿里云香港BGP专线 16核32G 10M带宽 优惠购买 399元购买链接阿里云...

stackoverflow为你推荐
wmiprvse为什么会有wmiprvse.exe和wmiprvse 这两个 算不算病毒?rbf神经网络rbf神经网络的输入参数个数有上限么开票系统国税承认的开票系统有哪些showwindowShowWindow和EnableWindow区别知识库管理系统什么是知识管理查字网騳骉,怎样读?拼音郭凡生慧聪网公司怎么样jdk6Java 中的 JDK 6 Update 6 到哪下载啊 ? 有一点急丁奇王下七武海和四皇分别是谁?数秦科技奇秦科技是做什么的,大家了解过吗?
备案域名 俄罗斯vps 新网域名管理 香港ufo vpsio 外国服务器 php主机 网络星期一 174.127.195.202 lighttpd 2017年万圣节 青果网 dropbox网盘 日本bb瘦 七夕促销 gspeed 空间合租 中国电信宽带测速网 vip域名 免费网页空间 更多