C语言Release模式正常但Debug模式出错是为什么

这个是Realese的

img

这个是Debug的

img

这是一个计算二叉树指定结点层次的代码


#include<stdio.h>
#include<malloc.h>
typedef struct BiTNode{
    char data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
BiTree CreateBiTree()
{
    char e;
    BiTree T;
    scanf("%c",&e);
    if(e=='#')
    T=NULL;
    else
    {
        T=(BiTNode*)malloc(sizeof(BiTNode));
        if(!T)
        return 0;
        T->data=e;
        T->lchild=CreateBiTree();
        T->rchild=CreateBiTree();
    }
    return T;
}

int getLever(BiTree T,char p)
{
    if(T==NULL) return 0;
    if(T->data==p) return 1;//如果相等,返回第一层
    int l=getLever(T->lchild,p);printf("l:%d  ",l);
    int r=getLever(T->rchild,p);printf("r:%d  ",r);
    if(l||r)
    {
    //注意这个,只有当在树中找到P时才进入
        if(l>r)
         return l+1;
        else 
          return r+1;
    }
}


int main()
{
    BiTree T;
    T=CreateBiTree();
    char ch;
    getchar();
    scanf("%c",&ch);
    printf("D:%d  ",getLever(T,ch));
}