首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-04-22 
请问一个类资源释放的问题?C/C++ codeclass A{public:A(void)~A(void)private:int lengthchar * bufA

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

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 &返回

热点排行