标题:总是出现该内存不能为“written"??该如何调试呢?
只看楼主
huangch
Rank: 1
来 自:肇庆学院网络工程系
等 级:新手上路
帖 子:62
专家分:0
注 册:2008-7-21
得分:0 
2008-11-27 22:43
huangch
Rank: 1
来 自:肇庆学院网络工程系
等 级:新手上路
帖 子:62
专家分:0
注 册:2008-7-21
得分:0 
2008-11-27 23:02
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
得分:0 
回复 第5楼 debroa723 的帖子

版主可以再指点下吗?我还是不明白哩!
我可以解释这函数:
//--------二叉树转化为森林----------------
int bi_forest(BiNode *t, CSNode **p)
{
//森林的存储结构采用孩子-兄弟表示法
//将二叉树树转化为相应的森林
    if (!t)
    {
        (*p) = NULL;
    }                                               //如果二叉树是空的,则将相应的森林也设为空
    else
    {
      if(NULL==*p)
      {
        *p=new CSNode(); //必须为p分配空间
       (*p)->firstchild = NULL ;
       (*p)->nextsibling = NULL;
      }
        (*p)->data = t->Data;
        bi_forest(t->lchild, &(*p)->firstchild);
        bi_forest(t->rchild, &(*p)->nextsibling);
    }

    return 0;
}
2008-11-27 23:50
huangch
Rank: 1
来 自:肇庆学院网络工程系
等 级:新手上路
帖 子:62
专家分:0
注 册:2008-7-21
得分:0 
回复 第13楼 debroa723 的帖子
谢谢!现在我明白了!
2008-11-27 23:58
huangch
Rank: 1
来 自:肇庆学院网络工程系
等 级:新手上路
帖 子:62
专家分:0
注 册:2008-7-21
得分:0 
回复 第13楼 debroa723 的帖子
请问版主你是用什么方法知道我程序哪里的内存空间有问题滴??
我想向你请教一下方法!谢谢
2008-11-29 00:47
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
得分:0 
大量调试下得到的经验,一看就知道可能出的什么错,会是什么原因引起的.
初学者可能会迷惘,在错误面前不知该怎么办.其实使用好VC,找出错误的原因是很快的,
DEBUG下,运行出错,错误对话框上有中断,终止,忽略的选项,记得选择中断,然后程序会停在出错代码的地方,有时候出错的地方可能是在库里,这不要紧,打开"调试"=>"窗口"=>"调用堆栈",在调用堆栈窗口里,从上向下,找到第一个你的代码的那一行,或是有源码的那一行,双击它,就定位到出错代码的地方,然后把变量,指针什么的丢进监视窗口观察,看为什么会引起崩溃,一般都是值不合法,如果是这样,接下来就要找出值为什么不合法,是代码逻辑不对,还是调用者传来一非法值,仔细研究代码,如果不在这一行,从调用堆栈窗口中向下一条去,那里就是调用者代码的地方,看看它为什么传非法值来的,直到找到错误的根源.
通过这样的过程,可以让代码变的健壮,也可以理解知识点.
还有其它的调试手段,如看寄存器的值变化,看汇编,当然最重要的还是基础的牢固和对代码的熟习程度,了解自己的思路被准确的变成了代码,这才是关键,调试会增强这一概念,达到人机和一的境界.
2008-12-03 23:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-246601-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017792 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved