struct table
{
long type;
char* data;
table* next;
};
void main(void)
{
table* bbb;
bbb=new table;
bbb->data=new char[4];
bbb->data="432";
........................
         请问到最后如何delete  bbb->data,和bbb

}

解决方案 »

  1.   

    delete []bbb->data;
    delete bbb;
      

  2.   

    bbb->data=new char[4];
    bbb->data="432";这样用不对,应该是
    bbb->data=new char[4];
    strcpy(bbb->data,"432");否则delete时可能会有问题。
      

  3.   

    你的这种情况,将导致内存泄漏,也会死机.
    bbb->data=new char[4];分配的内存使用delete[] bbb->data, 但是后来你又
    bbb->data="432";它指向常量字符串,不能用delete删除.
      

  4.   

    delete[] bbb->data;
    delete bbb;
      

  5.   

    delete[]  bbb->data
    delete bbb
      

  6.   

    struct table
    {
    long type;
    CString data;
    table* next;
    };
    用CString不是更好吗?
      

  7.   

    delete[] bbb->data;
    delete bbb;
      

  8.   

    用CString,那要怎么才能够排序?
      

  9.   

    你既然用delete的话,必定是C++了,C++更好的方式是用类来实现;这也是delete比free()函数的优势所在你最好把你的结构做成一个类,在类的析构函数中delete数据成员,这样的话你在主程序中使用 delete bbb;系统会自动调用析构函数,析构函数自动析构链表的下一级,这样子的话,delete就非常简单了
      

  10.   

    class table
    {
             table(){data=NULL;next=NULL};
             ~tabke(){if(data!=NULL){delete []data;data=NULL;}if(next!=NULL){delete next;next=NULL;}}
    long type;
    char* data;
    table* next;
    };
    main()
    {
    table* bbb;
    bbb=new table;
    bbb->data=new char[4];
    strcpy(bbb->data,"234");
    ………………………………
             delete bbb;
    }bbb->data="432";
    这种赋值是不对的!
      

  11.   

    用CString,那要怎么才能够排序?
    ===================================int Compare( LPCTSTR lpsz ) const;Return ValueZero if the strings are identical, < 0 if this CString object is less than lpsz, or > 0 if this CString object is greater than lpsz.ParameterslpszThe other string used for comparison.
      

  12.   

    String str1 = "33",str2="22";
    if(str1.Compare(str2) > 0)
    {
    CString t;
    t = str1;
    str1 = str2;
    str2 = t;
    }