A problem with TMatrixDSparse

int main(int argc, char * argv[])
{
                TMatrixDSparse unit1(5,5);
	TArrayI row(5),col(5);
	for (Int_t i = 0; i < 5; i++) row[i] = col[i] = i;
	TArrayD data(5); data.Reset(1.);
	unit1.SetMatrixArray(5,row.GetArray(),col.GetArray(),data.GetArray());
}

When the deconstrutor of TMatrixDSparse is called at the end of program, there is something wrong.
I got the same error in Visual Studio 2008 / 2012.

I try to debug and find out the error in root\math\matrix\inc\TMatrixTSparse.h

   virtual void Clear(Option_t * /*option*/ ="") { if (this->fIsOwner) {
                                                     if (fElements) delete [] fElements; fElements = 0;
                                                     if (fRowIndex) delete [] fRowIndex; fRowIndex = 0;
                                                     if (fColIndex) delete [] fColIndex; fColIndex = 0;
                                                   }
                                                   this->fNelems    = 0;
                                                   this->fNrowIndex = 0;
                                                 } 

The destuctor try to delete fElements but failed.
But I don’t to know how to fix this bug.