双世宠妃12集百度云3-16集百度云谢谢

posts - 0,&
comments - 0,&
trackbacks - 0
在逛论坛时看到下面一段很值得借鉴的经验(感谢bluebohe薄荷):
1. & 变量。 &
大家都知道,debug跟release在初始化变量时所做的操作是不同的,debug是将每个字节位都赋成0xcc(注1),而release的赋值近
似于随机(我想是直接从内存中分配的,没有初始化过)。这样就明确了,如果你的程序中的某个变量没被初始化就被引用,就很有可能出现异常:用作控制变量将
导致流程导向不一致;用作数组下标将会使程序崩溃;更加可能是造成其他变量的不准确而引起其他的错误。所以在声明变量后马上对其初始化一个默认的值是最简
单有效的办法,否则项目大了你找都没地方找。代码存在错误在debug方式下可能会忽略而不被察觉到,如debug方式下数组越界也大多不会出错,在
release中就暴露出来了,这个找起来就比较难了:(
& 还是自己多加注意吧。
2. & 自定义消息的消息参数。 &
MFC为我们提供了很好的消息机制,更增加了自定义消息,好处我就不用多说了。这也存在debug跟release的问题吗?答案是肯定的。在自定义消息的函数体声明时,时常会看到这样的写法: &
afx_msg & LRESULT & OnMessageOwn(); &
Debug情况下一般不会有任何问题,而当你在Release下且多线程或进程间使用了消息传递时就会导致无效句柄之类的错误。导致这个错误直接原因是消
息体的参数没有添加,即应该写成:afx_msg & LRESULT & OnMessageOwn(WPARAM & wparam, &
lparam); & (注2) &
3. & release模式下不出错,但debug模式下报错。 &
这种情况下大多也是因为代码书写不正确引起的,查看MFC的源码,可以发现好多ASSERT的语句(断言),这个宏只是在debug模式下才有效,那么就
清楚了,release版不报错是忽略了错误而不是没有错误,这可能存在很大的隐患,因为是Debug模式下,比较方便调试,好好的检查自己的代码,再此
就不多说了。 &
4. & ASSERT, & VERIFY, & TRACE..........调试宏 &
这种情况很容易解释。举个例子:请在VC下输入ASSERT然后选中按F12跳到宏定义的地方,这里你就能够发现Debug中ASSERT要执行
AfxAssertFailedLine,而Release下的宏定义却为 "#define & ASSERT(f) & ((void)0)
"。所以注意在这些调试宏的语句不要用程序相关变量如i++写操作的语句。VERIFY是个例外, "#define & VERIFY(f) &
((void)(f)) ",即执行,这里的作用就不多追究了,有兴趣可自己研究:)。 &
Debug与Release不同的问题在刚开始编写代码时会经常发生,99%是因为你的代码书写错误而导致的,所以不要动不动就说系统问题或编译器问题,
努力找找自己的原因才是根本。我从前就常常遇到这情况,经历过一次次的教训后我就开始注意了,现在我所写过的代码我已经好久没遇到这种问题了。下面是几个
避免的方面,即使没有这种问题也应注意一下: &
1. & 注意变量的初始化,尤其是指针变量,数组变量的初始化(很大的情况下另作考虑了)。 &
2. & 自定义消息及其他声明的标准写法 &
3. & 使用调试宏时使用后最好注释掉 &
4. & 尽量使用try & - & catch(...) &
5. & 尽量使用模块,不但表达清楚而且方便调试。
阅读(...) 评论() &6793人阅读
一、Debug 和 Release 编译方式的本质区别
  Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
  Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起 Release 版错误,在此不讨论)
  Debug 版本:
  /MDd /MLd 或 /MTd 使用 Debug runtime library(调试版本的运行时刻函数库)
  /Od 关闭优化开关
  /D "_DEBUG" 相当于 #define _DEBUG,打开编译调试代码开关(主要针对
  assert函数)
  /ZI 创建 Edit and continue(编辑继续)数据库,这样在调试过
  程中如果修改了源代码不需重新编译
  /GZ 可以帮助捕获内存错误
  /Gm 打开最小化重链接开关,减少链接时间
  Release 版本:
  /MD /ML 或 /MT 使用发布版本的运行时刻函数库
  /O1 或 /O2 优化开关,使程序最小或最快
  /D "NDEBUG" 关闭条件编译调试代码开关(即不编译assert函数)
  /GF 合并重复的字符串,并将字符串常量放到只读内存,防止
  被修改
  实际上,Debug 和 Release 并没有本质的界限,他们只是一组编译选项的集合,编译器只是按照预定的选项行动。事实上,我们甚至可以修改这些选项,从而得到优化过的调试版本或是带跟踪语句的发布版本。
  二、哪些情况下 Release 版会出错
  有了上面的介绍,我们再来逐个对照这些选项看看 Release 版错误是怎样产生的
  1. Runtime Library:链接哪种运行时刻函数库通常只对程序的性能产生影响。调试版本的 Runtime Library 包含了调试信息,并采用了一些保护机制以帮助发现错误,因此性能不如发布版本。编译器提供的 Runtime Library 通常很稳定,不会造成 Release 版错误;倒是由于 Debug 的 Runtime Library 加强了对错误的检测,如堆内存分配,有时会出现 Debug 有错但 Release 正常的现象。应当指出的是,如果 Debug 有错,即使 Release 正常,程序肯定是有 Bug 的,只不过可能是 Release 版的某次运行没有表现出来而已。
  2. 优化:这是造成错误的主要原因,因为关闭优化时源程序基本上是直接翻译的,而打开优化后编译器会作出一系列假设。这类错误主要有以下几种:
  (1) 帧指针(Frame Pointer)省略(简称 FPO ):在函数调用过程中,所有调用信息(返回地址、参数)以及自动变量都是放在栈中的。若函数的声明与实现不同(参数、返回值、调用方式),就会产生错误 &&&&但 Debug 方式下,栈的访问通过 EBP 寄存器保存的地址实现,如果没有发生数组越界之类的错误(或是越界&不多&),函数通常能正常执行;Release 方式下,优化会省略 EBP 栈基址指针,这样通过一个全局指针访问栈就会造成返回地址错误是程序崩溃。&的强类型特性能检查出大多数这样的错误,但如果用了强制类型转换,就不行了。你可以在 Release 版本中强制加入 /Oy- 编译选项来关掉帧指针省略,以确定是否此类错误。此类错误通常有:
  ● MFC 消息响应函数书写错误。正确的应为
  afx_msg LRESULT OnMessageOwn(WPARAM wparam, LPARAM lparam);
  ON_MESSAGE 宏包含强制类型转换。防止这种错误的方法之一是重定义 ON_MESSAGE 宏,把下列代码加到 stdafx.h 中(在#include "afxwin.h"之后),函数原形错误时编译会报错
  #undef ON_MESSAGE
  #define ON_MESSAGE(message, memberFxn) { message, 0, 0, 0, AfxSig_lwl, (AFX_PMSG)(AFX_PMSGW)(static_cast& LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM) & (&memberFxn) },
  (2) volatile 型变量:volatile 告诉编译器该变量可能被程序之外的未知方式修改(如系统、其他进程和线程)。优化程序为了使程序性能提高,常把一些变量放在寄存器中(类似于 register 关键字),而其他进程只能对该变量所在的内存进行修改,而寄存器中的值没变。如果你的程序是多线程的,或者你发现某个变量的值与预期的不符而你确信已正确的设置了,则很可能遇到这样的问题。这种错误有时会表现为程序在最快优化出错而最小优化正常。把你认为可疑的变量加上 volatile 试试。
  (3) 变量优化:优化程序会根据变量的使用情况优化变量。例如,函数中有一个未被使用的变量,在 Debug 版中它有可能掩盖一个数组越界,而在 Release 版中,这个变量很可能被优化调,此时数组越界会破坏栈中有用的数据。当然,实际的情况会比这复杂得多。与此有关的错误有:
  ● 非法访问,包括数组越界、指针错误等。例如
void fn(void)
a[-1] = 1;//当然错误不会这么明显,例如下标是变量
  j 虽然在数组越界时已出了作用域,但其空间并未收回,因而 i 和 j 就会掩盖越界。而 Release 版由于 i、j 并未其很大作用可能会被优化掉,从而使栈被破坏。
  3. _DEBUG 与 NDEBUG :当定义了 _DEBUG 时,assert() 函数会被编译,而 NDEBUG 时不被编译。除此之外,V中还有一系列断言宏。这包括:
ANSI C 断言 void assert(int expression );
C Runtime Lib 断言 _ASSERT( booleanExpression );
_ASSERTE( booleanExpression );
MFC 断言 ASSERT( booleanExpression );
VERIFY( booleanExpression );
ASSERT_VALID( pObject );
ASSERT_KINDOF( classname, pobject );
ATL 断言 ATLASSERT( booleanExpression );
  此外,TRACE() 宏的编译也受 _DEBUG 控制。
  所有这些断言都只在 Debug版中才被编译,而在 Release 版中被忽略。唯一的例外是 VERIFY() .事实上,这些宏都是调用了 assert() 函数,只不过附加了一些与库有关的调试代码。如果你在这些宏中加入了任何程序代码,而不只是布尔表达式(例如赋值、能改变变量值的函数调用 等),那么 Release 版都不会执行这些操作,从而造成错误。初学者很容易犯这类错误,查找的方法也很简单,因为这些宏都已在上面列出,只要利用 VC++ 的 Find in Files 功能在工程所有文件中找到用这些宏的地方再一一检查即可。另外,有些高手可能还会加入 #ifdef _DEBUG 之类的条件编译,也要注意一下。
  顺便值得一提的是 VERIFY() 宏,这个宏允许你将程序代码放在布尔表达式里。这个宏通常用来检查&&API 的返回值。有些人可能为这个原因而滥用 VERIFY() ,事实上这是危险的,因为 VERIFY() 违反了断言的思想,不能使程序代码和调试代码完全分离,最终可能会带来很多麻烦。因此,专家们建议尽量少用这个宏。
  4. /GZ 选项:这个选项会做以下这些事
  (1) 初始化内存和变量。包括用 0xCC 初始化所有自动变量,0xCD ( Cleared Data ) 初始化堆中分配的内存(即动态分配的内存,例如 new ),0xDD ( Dead Data ) 填充已被释放的堆内存(例如 delete ),0xFD( deFencde Data ) 初始化受保护的内存(debug 版在动态分配内存的前后加入保护内存以防止越界访问),其中括号中的词是微软建议的助记词。这样做的好处是这些值都很大,作为指针是不可能的(而且 32 位系统中指针很少是奇数值,在有些系统中奇数的指针会产生运行时错误),作为数值也很少遇到,而且这些值也很容易辨认,因此这很有利于在 Debug 版中发现 Release 版才会遇到的错误。要特别注意的是,很多人认为编译器会用 0 来初始化变量,这是错误的(而且这样很不利于查找错误)。
  (2) 通过函数指针调用函数时,会通过检查栈指针验证函数调用的匹配性。(防止原形不匹配)
  (3) 函数返回前检查栈指针,确认未被修改。(防止越界访问和原形不匹配,与第二项合在一起可大致模拟帧指针省略 FPO )
  通常 /GZ 选项会造成 Debug 版出错而 Release 版正常的现象,因为 Release 版中未初始化的变量是随机的,这有可能使指针指向一个有效地址而掩盖了非法访问。
  除此之外,/Gm /GF 等选项造成错误的情况比较少,而且他们的效果显而易见,比较容易发现。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:290969次
积分:3044
积分:3044
排名:第8816名
原创:15篇
转载:169篇
评论:38条
(2)(1)(2)(2)(2)(4)(5)(13)(2)(13)(17)(51)(20)(1)(4)(10)(23)(4)(7)21ic官方微信-->
后使用快捷导航没有帐号?
查看: 9720|回复: 13
在IAR-EW环境中,Release和 debug 的主要区别是什么呢 ?
&&已结帖(0)
主题帖子积分
中级技术员, 积分 162, 距离下一级还需 138 积分
中级技术员, 积分 162, 距离下一级还需 138 积分
主题帖子积分
专家等级:结帖率:95%
主题帖子积分
中级技术员, 积分 162, 距离下一级还需 138 积分
中级技术员, 积分 162, 距离下一级还需 138 积分
在IAR-EW环境中,Release和 debug 的主要区别是什么呢 ? ? ? ?
这个概念我是很模糊,
是不是在Release中,已自动禁止了“assert_param”这个宏定义呢 ???
请各位老师具体谈出几点主要区别,我也好好学习一下。
我的试验情况如下:
IAR-EW环境可以用来下载脱机程序,日试过了,在Release环境下可以下载脱机程序,脱机后运行正常 !!!!!!!! Release环境下在option选项中,包括debug信息也可以,这样Release下就也可以仿真, 然后, 直接脱机, 也工作正常 !!!!!!!!!!!!!!!!!!!!!!!!!!!!
请各位给与指点。 谢谢。
主题帖子积分
中级技术员, 积分 162, 距离下一级还需 138 积分
中级技术员, 积分 162, 距离下一级还需 138 积分
主题帖子积分
专家等级:结帖率:95%
主题帖子积分
中级技术员, 积分 162, 距离下一级还需 138 积分
中级技术员, 积分 162, 距离下一级还需 138 积分
欢迎大家探讨。
主题帖子积分
技术达人, 积分 8545, 距离下一级还需 1455 积分
技术达人, 积分 8545, 距离下一级还需 1455 积分
主题帖子积分
专家等级:结帖率:64%
主题帖子积分
技术达人, 积分 8545, 距离下一级还需 1455 积分
技术达人, 积分 8545, 距离下一级还需 1455 积分
根据我的理解Release就是最终对外发行版, debug 是你在调试时候的版本,debug会包含一些额外的调试信息,而Release版的没有。
之所以这么说是因为visual studio在编译软件的时候也有这么两个选项。
主题帖子积分
高级工程师, 积分 5954, 距离下一级还需 2046 积分
高级工程师, 积分 5954, 距离下一级还需 2046 积分
主题帖子积分
专家等级:结帖率:40%
主题帖子积分
高级工程师, 积分 5954, 距离下一级还需 2046 积分
高级工程师, 积分 5954, 距离下一级还需 2046 积分
好像是需要关键字来配合的,要不应该差不多吧。
主题帖子积分
高级工程师, 积分 7676, 距离下一级还需 324 积分
高级工程师, 积分 7676, 距离下一级还需 324 积分
主题帖子积分
专家等级:结帖率:32%
主题帖子积分
高级工程师, 积分 7676, 距离下一级还需 324 积分
高级工程师, 积分 7676, 距离下一级还需 324 积分
编译器优化级别,链接器输出文件的格式(是否包含调试信息,等)
主题帖子积分
中级技术员, 积分 209, 距离下一级还需 91 积分
中级技术员, 积分 209, 距离下一级还需 91 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
中级技术员, 积分 209, 距离下一级还需 91 积分
中级技术员, 积分 209, 距离下一级还需 91 积分
Debug模式是有任何异常都会崩溃...
Release模式有任何异常都会想办法帮你糊弄过去....
理论上来说 能经过Debug的 Release都没问题....
这个只在软件开发中有意义....在硬件控制中无意义....
主题帖子积分
中级技术员, 积分 162, 距离下一级还需 138 积分
中级技术员, 积分 162, 距离下一级还需 138 积分
主题帖子积分
专家等级:结帖率:95%
主题帖子积分
中级技术员, 积分 162, 距离下一级还需 138 积分
中级技术员, 积分 162, 距离下一级还需 138 积分
请问那种场合要用Release ????
& &&&请问那种场合要用debug呢 ???
主题帖子积分
主题帖子积分
专家等级:结帖率:35%打赏:0.00受赏:9.00
主题帖子积分
按照名称做:调试时用debug,开发成功时用release。
I do not teach, but I coach. I do not feed, but I seed.
欢迎访问我的博客:/BLOG_OWNER_199055.HTM
主题帖子积分
资深工程师, 积分 11952, 距离下一级还需 8048 积分
资深工程师, 积分 11952, 距离下一级还需 8048 积分
主题帖子积分
专家等级:结帖率:89%
主题帖子积分
资深工程师, 积分 11952, 距离下一级还需 8048 积分
资深工程师, 积分 11952, 距离下一级还需 8048 积分
Debug模式是有任何异常都会崩溃...
Release模式有任何异常都会想办法帮你糊弄过去....
理论上来说 能经过Debug的 Release都没问题....
是不是经济不KUA,房价下不来?
高房价只能带来“实体经济挤出效应”。
主题帖子积分
助理工程师, 积分 1323, 距离下一级还需 677 积分
助理工程师, 积分 1323, 距离下一级还需 677 积分
主题帖子积分
专家等级:结帖率:95%
主题帖子积分
助理工程师, 积分 1323, 距离下一级还需 677 积分
助理工程师, 积分 1323, 距离下一级还需 677 积分
Debug和Release,名字和数量可以在菜单栏的Project--&Edit Configuration中增删修改
每个选项都对应着一种配置(也就是项目名称右击Options里的内容),互相是独立的。
Debug和Release只是2个配置的名称而已,具体要怎么配置,还是要你自己修改的,比如代码优化的等级等等
开始学习中~
主题帖子积分
中级技术员, 积分 159, 距离下一级还需 141 积分
中级技术员, 积分 159, 距离下一级还需 141 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
中级技术员, 积分 159, 距离下一级还需 141 积分
中级技术员, 积分 159, 距离下一级还需 141 积分
主题帖子积分
高级工程师, 积分 6988, 距离下一级还需 1012 积分
高级工程师, 积分 6988, 距离下一级还需 1012 积分
主题帖子积分
专家等级:结帖率:36%
主题帖子积分
高级工程师, 积分 6988, 距离下一级还需 1012 积分
高级工程师, 积分 6988, 距离下一级还需 1012 积分
debug是编码时用的,可用于调试,并得到许多信息;
release是发行时用的,程序个头小。
主题帖子积分
资深技术员, 积分 453, 距离下一级还需 47 积分
资深技术员, 积分 453, 距离下一级还需 47 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
资深技术员, 积分 453, 距离下一级还需 47 积分
资深技术员, 积分 453, 距离下一级还需 47 积分
善始善终,努力坚持
主题帖子积分
初级技术员, 积分 85, 距离下一级还需 15 积分
初级技术员, 积分 85, 距离下一级还需 15 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
初级技术员, 积分 85, 距离下一级还需 15 积分
初级技术员, 积分 85, 距离下一级还需 15 积分
<font color="#9734424 发表于
Debug和Release,名字和数量可以在菜单栏的Project--&Edit Configuration中增删修改
每个选项都对应着一种 ...
这个才是正解,只是两种不同优化或者其他配置不同而已,一般我们Release 都是会针对应用来选优化等级,输出格式化等,如果你在Debu也是一样的配置就无所谓哪一种了。
时间类勋章
精英会员奖章
等级类勋章
奔腾之江水
发帖类勋章
时间类勋章
技术奇才奖章
人才类勋章
无冕之王奖章
等级类勋章
沉静之湖泊
发帖类勋章
时间类勋章
技术导师奖章
人才类勋章
时间类勋章
荣誉元老奖章
等级类勋章
坚毅之洋流
发帖类勋章
技术领袖奖章
人才类勋章
核心会员奖章
等级类勋章
时间类勋章
社区建设奖章
等级类勋章
欢快之小溪
发帖类勋章
技术高手奖章
人才类勋章
时间类勋章
涓涓之细流
发帖类勋章
时间类勋章
技术新星奖章
人才类勋章关于Debug&Release的区别
关于Debug&Release区别
& debug跟release在初始化变量时所做的操作是不同的,debug是将每个字节位都赋成
0xcc(注1),而release的赋值近似于随机。这样就明确了,如果程序中的某个变量没被初始化就
被引用,在release上就很有可能出现异常:用作控制变量将导致不可预料错误;用作数组下标将会使程序崩溃;更有可能是造成其他变量的不准确而引起其他的错误。所以在
声明变量后马上对其初始化一个默认的值是最简单有效的办法,否则项目大了你找都没地方找。
2. 自定义消息的消息参数。
& MFC为我们提供了很好的消息机制,更增加了自定义消息。也许 你会问这也存在debug跟
release的问题吗?答案是肯定的。在自定义消息的函数体声明时,时常会看到这样的写法:afx_msg LRESULT
OnMessageOwn()(注2);
Debug情况下一般不会有任何问题,而当你在Release下且多线程或进程间使用了消息传递时就会导致无效句柄之类的错误。导致这个错误直接原因是消
息体的参数没有添加,即应该写成:afx_msg LRESULT OnMessageOwn(WPARAM wparam, LPARAM
3. release模式下不出错,但debug模式下报错。
&这种情况下大多是因为代码书写不正确引起的,查看MFC的源码,可以发现
好多ASSERT的语句(断言),这个宏只是在debug模式下才有效,那么就清楚了,release版不报错是忽略了错误而不是没有错误,这可能存在很
大的隐患,因为是Debug模式下,比较方便调试,需要多检查代码。
4. ASSERT, VERIFY, TRACE..........调试宏
这种情况很容易解释。举个例子:请在VC下输入ASSERT
然后选中按F12跳到宏定义的地方,这里你就能够发现Debug中ASSERT要执行AfxAssertFailedLine,而Release下的宏定
义却为"#define ASSERT(f)
((void)0)"。所以注意在这些调试宏的语句不要用程序相关变量如i++写操作的语句。VERIFY是个例外,"#define
VERIFY(f) ((void)(f))",即执行。
注1:debug版初始化成0xcc是因为0xcc在x86下是一条int
3单步中断指令,这样程序如果跑飞了遇到0xcc就会停下来,这和单片机编程时一般将没用的代码空间填入jmp 0000语句是一样地
注2:在函数调用的时候参数入栈的问题。因为MFC的消息使用宏写的,所以如果定义了OnMessage()的函数,编译能够通过,但是调用一次后,堆栈指针发生了偏移。然后就会出错了。
原文链接:
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。> 奇怪的CB6fulldebug模式,请各位高手帮忙程序在release模式报错,在fulldebu
奇怪的CB6fulldebug模式,请各位高手帮忙程序在release模式报错,在fulldebu
lsxit214 & &
发布时间: & &
浏览:1 & &
回复:4 & &
悬赏:0.0希赛币
奇怪的CB6 full debug模式,请各位高手帮忙程序在release模式报错,在full debug模式不报错,在release模式去掉代码优化也不报错。但奇怪的是在full debug模式修改所有在compiler选项卡中与release不同的项后,仍然可以通过出错的代码:class cell{public: cell(void);public: ~cell(void);public: &
bool Dfilling(int x1,int y1,int h);//填充 &
int a[200][200]; &}bool cell::Dfilling(int x1,int y1,int h){ &
if(a[y1][x1]==h)return 0; &
a[y1][x1]=h; &
if(y1-1&=0&&a[y1-1][x1]==e ){Dfilling(x1,y1-1,h);} &
if(x1-1&=0&&a[y1][x1-1]==e ){Dfilling(x1-1,y1,h);} &
if(y1+1&AY&&a[y1+1][x1]==e ){Dfilling(x1,y1+1,h);} &
if(x1+1&AX&&a[y1][x1+1]==e ){Dfilling(x1+1,y1,h);} &
return 0;}目的是用值h填充a[][]中值等于e的连续的区块调用:void __fastcall TForm1::OpenGL1MouseDown(TObject *Sender, &
TMouseButton Button, TShiftState Shift, int X, int Y){ &
cell mycell; &
mycell.e=mycell.a[(400-Y)/2][X/2]; &
mycell.Dfilling(X/2,(400-Y)/2,ToolButton9-&Tag%10 ); &
OpenGL1-&Repaint();}
class cell最后 } 后面加上分号 ;其他是否有问题,你先贴出错误提示,或贴出更多源码,才能分析。
lsy_66 & &
14:08:22 & &
& & (0)(0)代码优化后出问题是可能的
lsxxfmary & &
14:08:22 & &
& & (0)(0)看看栈。可能是递归的时候栈爆掉了吧。Debug下的默认栈空间可能与发布时的不太一样,也许用的是模拟栈。我也喜欢用递归,但递归的层数若无法控制,总有种担心的感觉……
lsy_1900 & &
14:08:22 & &
& & (0)(0)如果可能的话,楼主把递归改用循环实现下,看看是否问题依旧。lsy_1900 & &
14:08:22 & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&

我要回帖

更多关于 双世宠妃第九集百度云 的文章

 

随机推荐