首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InitializeComponent中的堆栈溢出

InitializeComponent中的堆栈溢出
EN

Stack Overflow用户
提问于 2013-03-04 08:31:38
回答 2查看 1.2K关注 0票数 0

我在表单中添加了许多控件(至少数百个),其中相当多是自定义控件,InitializeComponent中的代码非常庞大。尽管如此,我仍然不明白为什么会有任何递归,为什么会发生堆栈溢出。只有当我在VS (2008,它使用.net Framework3.5和Winforms)内部运行调试版本时才会发生这种情况。如果我双击可执行文件,应用程序就会运行。有人能告诉我这是怎么回事吗?我能做些什么来找出原因?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-04 11:01:51

你的InitializeComponent方法的代码可能包含很多局部变量/大局部变量(例如,带有很多字段的struct )-它们几乎占用了所有可用的堆栈空间,并且当在VS中的调试器下运行时,堆栈中的空间会更少,因此出现了错误。

如果这就是问题所在,可能会修复将局部变量转换为类字段,和/或将InitInstance方法拆分为具有自己的局部变量的不同方法-这些方法将共享相同的堆栈空间。

票数 2
EN

Stack Overflow用户

发布于 2013-03-04 08:40:53

你最好的办法就是找出发生异常的确切位置--控制Alt E会弹出异常对话框--在抛出公共语言运行时异常时,单击“抛出”下面的,调试就会立即停止--在那里,你可以查看调用堆栈并跟踪调用,看看哪里出了问题。(如果快捷方式不起作用,可以在visual studio中单击“调试/异常”进行同样的操作)

(为了清楚起见-- exceptions窗口会弹出一个对话框,左边有一个列表,C++ Exception,Common Language Runtime Exception,等等……您想要单击与公共语言运行时异常一致的第一个复选框,以便您的代码在遇到问题时立即中断,然后进行进一步的投资,使用debug/windows/callstack -或control/alt C-这将使您快速了解是否存在递归或其他问题。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15192729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档