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

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

OneTechCloud(31元),美国CN2 GIA高防VPS月

OneTechCloud发布了本月促销信息,全场VPS主机月付9折,季付8折,优惠后香港VPS月付25.2元起,美国CN2 GIA线路高防VPS月付31.5元起。这是一家2019年成立的国人主机商,提供VPS主机和独立服务器租用,产品数据中心包括美国洛杉矶和中国香港,Cera的机器,VPS基于KVM架构,采用SSD硬盘,其中美国洛杉矶回程CN2 GIA,可选高防。下面列出部分套餐配置信息。美国CN...

PQ.hosting全线9折,1Gbps带宽不限流量VPS/€3/月,全球11大机房可选

Hostadvice主机目录对我们的服务进行了测试,然后给PQ.hosting颁发了十大WordPress托管奖。为此,宣布PQ.Hosting将在一周内进行折扣优惠,购买和续订虚拟服务器使用优惠码:Hostadvice ,全部优惠10%。PQ.hosting,国外商家,成天于2019年,正规公司,是全球互联网注册商协会 RIPE 的成员。主要是因为提供1Gbps带宽、不限流量的基于KVM虚拟的V...

乐凝网络支持24小时无理由退款,香港HKBN/美国CERA云服务器,低至9.88元/月起

乐凝网络怎么样?乐凝网络是一家新兴的云服务器商家,目前主要提供香港CN2 GIA、美国CUVIP、美国CERA、日本东京CN2等云服务器及云挂机宝等服务。乐凝网络提供比同行更多的售后服务,让您在使用过程中更加省心,使用零云服务器,可免费享受超过50项运维服务,1分钟内极速响应,平均20分钟内解决运维问题,助您无忧上云。目前,香港HKBN/美国cera云服务器,低至9.88元/月起,支持24小时无理...

stackoverflow为你推荐
flash控件手机怎么安装flash插件科来网络分析系统科来网络分析系统 6.0 专家版 (演示)的功能onboardon board有这个牌子吗论坛源码求高手推荐一个好的论坛源码?要可以购买版权的那种,要便宜的洗牌算法我是小白,eclipse说老式声明,怎么办?帮我看下,不胜感激!! //发牌算法fcloseC语言文件关闭函数fclose(文件指针)是什么?representspublic class是什么意思mindmanager破解版请给个Mindjet MindManager PRO 15的正式版bindservice安卓里 remote service到底有什么用editplus破解版手机的常用软件和ngage的破解版
租服务器价格 企业域名备案 zpanel hawkhost优惠码 商家促销 魔兽世界台湾服务器 美国十次啦服务器 网站cdn加速 空间合租 跟踪路由命令 空间登陆首页 智能dns解析 阿里云免费邮箱 游戏服务器出租 服务器硬件配置 512内存 塔式服务器 alexa世界排名 2016黑色星期五 服务器是什么意思 更多