请问一个类资源释放的问题?
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;}