Hi all ,
I wrote a program, but there is a problem, it reminds "debug error!", I have found that the problem was in "ginv:: ~ginv (){}" but I don't know how to solve it,can anyone help me with this, thank you !
Code:void CCalginvView::OnCalginv() { // TODO: Add your command handler code here ginv uv(5, 4); uv.input (); //由文件读入矩阵A的元素以及eps uv.a_ginv (); //计算广义逆 uv.output (); //输出U矩阵和V矩阵以及奇异值 }Code://1GINV.h #ifndef GINV_H_H #define GINV_H_H #include <iostream> #include <fstream> #include <cmath> using namespace std; class ginv { private: int m, n, ka; double **a, **u, **v, **aa, eps; double *s, *e, *w, fg[2], cs[2]; public: ginv (int mm, int nn); void input (); void uav (); //svd void ppp(); void sss(); void a_ginv (); void output (); ~ginv (); }; #endifCode://1GINV.CPP #include "stdafx.h" #include <iostream.h> #include <fstream.h> #include <math.h> #include "ginv.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ginv::ginv (int mm, int nn) { int i; m = mm; n= nn; a = new double*[m]; //动态分配内存空间 for (i=0; i<m; i++) a[i] = new double[n]; u = new double*[m]; for (i=0; i<m; i++) u[i] = new double[m]; v = new double*[n]; for (i=0; i<n; i++) v[i] = new double[n]; aa = new double*[n]; for (i=0; i<n; i++) aa[i] = new double[m]; ka = m + 1; if (m < n) ka = n + 1; s = new double[ka]; e = new double[ka]; w = new double[ka]; } ginv:: ~ginv () { int i; for (i=0; i<m; i++) { delete []a[i]; } delete [] a; for (i=0; i<m; i++) { delete [] u[i]; } delete [] u; for (i=0; i<n; i++) { delete [] v[i]; } delete [] v; for (i=0; i<n; i++) { delete [] aa[i]; } delete [] aa; delete [] s, e, w; } ..............




Reply With Quote
