文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程Asp.NetASP.NET 崩溃-SiteMap中疯狂的循环
精品推荐
特别推荐
·技巧实例:ASP.NET生成静态页面实现方法
·ASP.NET、JSP及PHP之间的抉择
·.net基础知识错误注意二十二点知识
·asp.net2.0学习历程 菜鸟到中级程序员的飞跃
·.NET基础知识-什么是.NET
·初学C#+ASP.NET+Oracle时积累的备忘点滴
·专家详解:复杂表达式的执行步骤
·asp.net中的加密方法
·DataGrid常见关注问题解决方案
·学习笔记 ASP.NET 5种页面转向法
·ASP.NET网络编程中经常会用到的27个函数集
·ASP.NET之上传文件管理策略
·专家:用.NET动态创建类的实例讲解
·ASP.NET WEB服务和Flash打造MP3播放器
·精通ASP.NET中弹出窗口技术
·asp.net常用代码
·asp.net创建文件夹的IO类的问题
·Asp.Net函数集
·Asp.net cache 简述
·如何最大限度提高.NET的性能 (续)
热点TOP10
·AspNetPager分页控件--使用方法
·ASP.NET购物车的实现及结算处理
·ASP.NET结合存储过程写的通用搜索分页程序
·ASP.Net程式中调用FCKeditor接口
·.NET Framework 3.5多国语言包
·ASP.NET2.0的multiview和wizard控件
·asp.net2.0学习历程 菜鸟到中级程序员的飞跃
·在ASP.NET中把图片保存到SQL SERVER数据库(vb.net)
·通过避免下列10个常见ASP.NET缺陷使网站平稳运行
·.NET基础知识-什么是.NET
·在C#中把两个DataTable连接起来
·VS2005+Crystal Report开发Web应用
·asp.net(C#)海量数据表高效率分页算法(不使用存储过程)
·IFontDisp和CFontHolder的使用问题
·获得一个DataTable中的奇数行和偶数行
·调试ASP.NET程序时出现“The Project Is Not Configured to Be Debugged”错误信息
·ADO.NET 2.0 DataSet和DataTable 新功能新特性
·用C#写计算器程序
·VC#中使用Crystal Report
·ASP.NET:使用DataTable对象保存数据

ASP.NET 崩溃-SiteMap中疯狂的循环

日期:2006年12月16日 作者: 查看:[大字体 中字体 小字体]


原文地址:http://blogs.msdn.com/tess/archive/2006/10/10/ASP.NET-Crash-_2D00_-Crazy-looping-in-a-SiteMap.aspx
发布时间:Tuesday, October 10, 2006 4:10 PM
作  者:Tess      

一天,我收到了一封有关我的博客的邮件,提出如下问题,简述如下:
 
我想快速地创建一个站点地图,因此我重写了BuildSiteMap()方法,在里面我写了一个循环,用以添加一些仿造的sitemap节点。


public override SiteMapNode BuildSiteMap(){
   for (int i = 0; i < 5; i++)
      myRoot.ChildNodes.Add(new SiteMapNode(this, i.ToString(), i.ToString(), i.ToString()));
   return myRoot;
}

运行程序,就发生堆栈溢出,服务器也崩溃了。我用调试器单步调试,发现真的很奇怪: 

1) int i = 0
2) i < 5
3) myRoot...
4) int i = 0
5) i < 5
etc.

i的值看起来从来没有增加,除非我调用到SiteMapNode(access a property, call a method),看起来这个循环是正确的。
是什么使得这个循环不确定呢?咋看可能是编译器或者是CLR的一个bug.

(当我获此问题时,我真不知道ASP.NET2.0中的站点导航,但我找到了这些文章... http://weblogs.asp.net/scottgu/archive/2005/11/20/431019.aspxhttp://aspnet.4guysfromrolla.com/articles/111605-1.aspx ,叙述得真是很不错.)

 

最初的想法


这个问题最重要的就是它始终重新开始, 这就意味着可以对此做现场调试。但我们暂不走那么远,先回头看看现在有什么...


1. 堆栈溢出


2. 一次又一次重新开始的循环


 我已经在先前的博客帖子里讨论过堆栈溢出,现在重复一下...    引起堆栈溢出的原因是, 分配了太多的函数指针,变量指针和参数,以致在堆栈里申请的内存数量不够用。到目前为止,堆栈溢出最平常的原因是无终止的递归。换句话说,function A调用了function B, function B又调用了function A...


因此,callstack看上去有点像这样....


...
functionB()
functionA()
functionB()
functionA() 


好了,一切都好极了,但那仅仅解释了堆栈溢出。那么疯狂的循环是怎么回事呢?
 
好...想象一下有这样一个函数(在-->处有有一个断点)


void MyRecursiveFunction(){
     for(int i=0; i<5; i++){
-->      MyRecursiveFunction();
     }
}


当你第一次停在断点处,i的值应该是0,callstack看起来是这样的...


MyRecursiveFunction()
...

 

现在调用MyRecrusive函数,每一次调用这个函数自己,会再一次出现 i=0(虽然我们并不真的在同一个loop里)。若调用MyRecrusive这个函数几个来回,并用实际执行的代码代替之,它将执行类似如下的代码:


for(int i=0; i<5; i++){
   for(int i2=0; i2<5; i2++){
      for(int i3=0; i3<5; i3++){
         for(int i4=0; i4<5; i4++){

[1] [2] [3] 下一页 




上一篇:C#中的接口

下一篇:两种添加数据到DropDownList控件的方法

ASP.NET 崩溃-SiteMap中疯狂的循环 相关文章:
·循环瘫痪下载器关闭杀软和防火墙
·360安全卫士缺陷致系统崩溃的解决
·循环不间断向上滚动的文本特效代码
·[交流]瀚海神州的疯狂——杀人升级法
·原来有奥妙在里面:为啥洋节在中国这么疯狂?
·疯狂医院2 - 游戏秘籍
·《疯狂大卡车:穿越美国》秘籍 - 游戏秘籍
·用Active SMART将硬盘崩溃防患于未然
·解决Vista SP1升级循环开机问题
·Vista资源管理器发现自我崩溃问题
ASP.NET 崩溃-SiteMap中疯狂的循环 相关软件:
·《疯狂李阳英语精华》零售版
·疯狂寿司
·疯狂机器 1
·疯狂英语口语速成
·疯狂的士 3
·疯狂的士3(Crazy Taxi 3)
·问题也疯狂 中文版
·疯狂机器3之新实验(Crazy Machines-News out of the laboratory)
·疯狂机器(Crazy Machines)
·疯狂堵车(Traffic Jam Extreme)

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot