在函数外部声明一个结构
struct stru_a
{
   char a1[10];
   char a2[10];
};
然后动态创建
bbb = new stru_a();
创建一个函数:
void func(stru_a * in_stru)
{
delete in_stru;
in_stru = NULL
return;
}
但是在调用函数func(bbb)后发现bbb != NULL,这是为什么?
还有如何才能在函数(方法)内部删除对象?

解决方案 »

  1.   

    你没有令bbb = NULL,他当然不变了,还是指着刚才的地址空间。
      

  2.   

    当然,如此只是将bbb new的对象删了,bbb本身还是指向那段内存的。你的func()中是传值调用啊!
      

  3.   

    在函数外部声明一个结构
    struct stru_a
    {
       char a1[10];
       char a2[10];
    };
    然后动态创建
    bbb = new stru_a();
    创建一个函数:
    void func(stru_a ** in_stru)
    {
    delete *in_stru;
    *in_stru = NULL
    return;
    }
      

  4.   

    void func(stru_a* &in_stru)
    {
    delete in_stru;
    in_stru = NULL
    return;
    }
      

  5.   

    老大
    in_stru是个局部变量。
    func(bbb)传给函数的是指针的值,bbb不会改变。正确写法如下:void func(stru_a ** in_stru)
    {
    delete *in_stru;
    *in_stru = NULL
    return;
    }
    调用: func(&bbb);
      

  6.   

    in_stru 不是bbb, 只是bbb的一个拷贝