读书人

请教一个类资源释放的有关问题

发布时间: 2012-04-22 18:34:46 作者: rapoo

请问一个类资源释放的问题?

C/C++ code
class A{public:    A(void);    ~A(void);private:    int length;    char * buf;    A ** a;public:    void SetA(int i);    A * GetA(int i);};A::A(void):length(0),a(NULL){    buf=new char[10];}A::~A(void){    if(buf)        delete [] buf;    if(a)    {        for(int i=0;i<length;i++)        {            if(a[i])                delete a[i];        }        delete [] a;    }}void A::SetA(int i){    length=i;    a=new A *[i];    for (int i=0;i<length;i++)    {        a[i]=new A;    }}A * A::GetA(int i){    if(i>=0&&i<length)        return a[i];    return NULL;}int main(){    A *a=new A;    a->SetA(10);    A *a1=a->GetA(1);    delete a1;  //这里误操作的话,delete a会发生内存读写错误的    delete a;    system("pause");    return 1;}


请问有没有好的方法可以避免:
A *a1=a->GetA(1);
delete a1; 被释放而导致内存读写错误,请教一下呀?(不使用资源管理类:auto_ptr share_ptr)

[解决办法]
使用A &返回

读书人网 >C++

热点推荐