typedef struct tagname {
char *name;
}Name;int newmemory( Name **method)
{
*method  = new Name;
for (int i =0; i< 10; i++)
{
(*method)[i].name = new char[10];
}
return 1;
}
int main(int argc, char* argv[])
{
Name *myMethod;
newmemory(&myMethod);
return 0;
}我要问的是我可以直接del掉 *method 这个指针吗。还是要先del (*method)[i].name  然后del *method  。 是不是一定要从下级向上级一步步del掉。
即for()del  --> del *method  这样。我想在另外一个函数中del掉这些指针  是不是要定义一个全局的method指针指向这个在newmemory()中形成的对象。 然后在新的函数在 for ()del; --> del *method.

解决方案 »

  1.   

    1、需要一级一级的来。没有办法,怎么分配怎么释放;
    2、不需要一个全局指针。你可以使用freememory( Name **method)这种形式阿。
      

  2.   

    int newmemory( Name **method)
    {
    *method  = new Name[10];
    for (int i =0; i< 10; i++)
    {
    (*method)[i].name = new char[10];
    }
    return 1;
    }
    int main(int argc, char* argv[])
    {
    Name *myMethod;
    newmemory(&myMethod);
    for (int i =0; i< 10; i++)
    {
    delete []((*method)[i].name); 
    }
             delete []myMethod;
    return 0;
    }
      

  3.   

    typedef struct tagname {
    char *name;
    }Name;
    int newmemory( Name **method)
    {
    *method  = new Name[10];
    for (int i =0; i< 10; i++)
    {
    (*method)[i].name = new char[10];
    }
    return 1;
    }
    int main(int argc, char* argv[])
    {
    Name *myMethod;
    newmemory(&myMethod);
    for (int i =0; i< 10; i++)
    {
    delete []((myMethod)[i].name); 
    }
    delete []myMethod;
    return 0;
    }
      

  4.   

    上面的程序 只是一层 在我真正的程序中要new 下去好几层!  
    可怕呀!
    还有:
    我要在 其他的函数中del  掉这个指针 是不是一定要定义一个全局的指针 !
    然后 del 这个全局指针  是不是 Ya!
      

  5.   

    没有关系啊,你只要自己清楚有几层就行了,del的时候根据new相反的方向去做