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() 进行处理。

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

iON Cloud:新加坡cn2 gia vps/1核/2G内存/25G SSD/250G流量/10M带宽,$35/月

iON Cloud怎么样?iON Cloud升级了新加坡CN2 VPS的带宽和流量最低配的原先带宽5M现在升级为10M,流量也从原先的150G升级为250G。注意,流量也仅计算出站方向。iON Cloud是Krypt旗下的云服务器品牌,成立于2019年,是美国老牌机房(1998~)krypt旗下的VPS云服务器品牌,主打国外VPS云服务器业务,均采用KVM架构,整体性能配置较高,云服务器产品质量靠...

HostKvm新上联通CUVIP线路VPS,八折优惠后1G内存套餐$5.2/月起

最近上洛杉矶机房联通CUVIP线路主机的商家越来越多了,HostKvm也发来了新节点上线的邮件,适用全场8折优惠码,基于KVM架构,优惠后最低月付5.2美元起。HostKvm是一家成立于2013年的国人主机商,提供基于KVM架构的VPS主机,可选数据中心包括日本、新加坡、韩国、美国、中国香港等多个地区机房,君选择国内直连或优化线路,延迟较低,适合建站或者远程办公等。以洛杉矶CUVIP线路主机为例,...

GreenCloudVPS$20/年,新加坡/美国/荷兰vps/1核/1GB/30GB,NVMe/1TB流量/10Gbps端口/KVM

greencloudvps怎么样?greencloudvps是一家国外主机商,VPS数据中心多,之前已经介绍过多次了。现在有几款10Gbps带宽的特价KVM VPS,Ryzen 3950x处理器,NVMe硬盘,性价比高。支持Paypal、支付宝、微信付款。GreenCloudVPS:新加坡/美国/荷兰vps,1核@Ryzen 3950x/1GB内存/30GB NVMe空间/1TB流量/10Gbps...

stackoverflow为你推荐
有道云笔记网页版有道云笔记的桌面版不能像网页版那样直接存储网页剪报内容的吧?那不就桌面版和网页版的功能很不同?一物一码什么是一物一码、一品一码?谁家做的比较好啊?云图片简单易学画的云彩图片网页微信客户端什么叫微信网页版?和电脑版是一回事吗?radius认证电信或网通的RADIUS认证都记录些什么?谁能说说ISP的宽带帐号检查流程问卷星登陆问卷星的使用步骤社工库网站怎么找社工库?相似图片搜索怎么找手机上的一张相似图片?新手怎么制作表格怎么样在电脑上制作表格初学者疫苗之王被称为免疫之王的产品
免费主机 国外bt wdcp ev证书 骨干网络 100mbps 空间购买 万网空间管理 美国凤凰城 中国电信网络测速 atom处理器 腾讯网盘 带宽测试 乐视会员免费领取 好看的空间 万网服务器 国外免费网盘 香港ip godaddy退款 更多