你把T->key[1]=x;屏蔽掉看看还有没有问题.

解决方案 »

  1.   

    你没有为你的指针申请空间~~~
    BTree  T;//变为 BTree  T = new BTNode;
      

  2.   

    sorry!有点错误,应该把T = new BTNode;放到构造函数中。
      

  3.   

    to ydogg:
      他if(!(T=(BTree )malloc(sizeof(BTNode))))已经申请过了.
      

  4.   

    Status CBTreeDoc::NewBRoot(BTree &q,KeyType x,BTree &ap,Record *rec)//这个函数好像也有点问题?
    //BTree &q//你要取指针的指针?一般很少这样,应该是BTree q吧。
    //不过我是猜的~
      

  5.   

    to ydogg:
      喂!他这是要引用q和ap知道吗?而不是要取指针的指针。
      这样q和ap的所指的地址是可以改变的。
      

  6.   

    BTree &q 是引用啊,不是指针,ydogg(灰毛兔)多看看再说话
      

  7.   

    typedef CString KeyType;
    struct ...
    {
    KeyType          key[m+1];      
    }拜托,CString 是不能放在结构里的,因长度不定。你的if(!(T=(BTree )malloc(sizeof(BTNode))))这个sizeof()有问题 !
    搞不定--发[email protected]
      

  8.   

    用memcpy(T->key[1],x,sizeof(CString))看看
      

  9.   

    saturday(星期六)说得对,CString不定长,改用char key[]或将KeyType数组改为KeyType*指针数组
      

  10.   

    同意saturday(星期六):
    建议用 KeyType *key;
    到时在分配内存
      

  11.   

    typedef CString KeyType;
    struct ...
    {
    KeyType          key[m+1];      
    }
      

  12.   

    用CStringArry算了  
      

  13.   

    用malloc 不会自动调用CString 的构造函数,你用new就正常了