allora dove ho segnato in neretto č dove c'č il problema, in realtā č un metodo di una classe, ma penso non cambi la sostanza
codice:
double **matrix(long pX, long pY)
{
double **mx;

mx = new double *[nfo.dimensioneMatrix];
if (!mx) a("mx"); // segnala eventuale errore

  for (int t=0; t<nfo.dimensioneMatrix; t++)
    {
     *(mx+t) = new double [nfo.dimensioneMatrix];
     if (!*(mx+t)) a("*(mx+t)"); // segnala eventuale errore
    }
   // poi ci sta la parte di codice che assegna i valori alla matrice
  // la ometto tanto non č rilevante ai fini del problema
return mx;
}
e l'ho modificata cosė

codice:
double **matrix(long pX, long pY)
{
static double **mx;
static int statica=0;

if (!statica)
  {
   mx = new double *[nfo.dimensioneMatrix];
   if (!mx) a("mx"); // segnala eventuale errore

    for (int t=0; t<nfo.dimensioneMatrix; t++)
      {
       *(mx+t) = new double [nfo.dimensioneMatrix];
       if (!*(mx+t)) a("*(mx+t)"); // segnala eventuale errore
      }
     statica++;
   }
     // poi ci sta la parte di codice che assegna i valori alla matrice
   // la ometto tanto non č rilevante ai fini del problema
return mx;
}