Nicht genuegend Speicher.
-
Habe keine Ahnung woran es liegt. Ich habe hier ein Programm, dass eine Bitmap anzeigt, beschneidet, RGB Werte ausliest, diese in HSI Werte umwandelt und schliesslich auf Basis dieser Werte einen Temperaturverlauf bestimmt.
Laeuft auch alles soweit nur seitdem ich den letzten Programmabschnitt (eigentlich eine ganz simple lineare Regression) eingefuegt habe, ueberaschte mich die Fehlermeldung:
Nicht genuegend Speicher.
Fuer die Berechnungen verwende ich mehrere Mehrdimensionale Arrays von doubles...
die alle aehnlich wie folgt deklariert und geloescht werden...// Declare Dynamic Array of Doubles for HSIData int BmpSize=m_Width*m_Height; double** HSIData = new double*[3]; for (i=0;i<3;i++) HSIData[i]=new double[BmpSize]; for (i=0;i<3;i++) delete [] HSIData[i] ; delete [] HSIData;
Irgendwer 'ne Idee was diesen Fehler ausloesen kann, oder wie ich mir den Inhalt des Speichers anschauen kann um dem Speicherzumueller auf die Schliche zu kommen ?
Schonmal vielen Dank,
Helge.
-
Ums noch etwas zu spezifizieren ich denke das Problem liegt in der folgenden Funktion:
void CDispBmpDoc::LinearCal(int xparticles) { // Declare Variables int xTemp; int pos; int i,j; double x,AvHue; double Hue,Temp; double lingr,axin; char nix[50]; // Define Input and Output Stream ifstream avhue; ifstream htcal; avhue.open("AvHue.dat"); htcal.open("HTCal_b.dat"); ofstream xyT; xyT.open("Temperature.dat"); // Dynamic Array for position and AvHue of Particle double** AvHueData = new double*[2]; for (i=0;i<2;i++) AvHueData[i]=new double[xparticles]; // Dynamic Array for position and Hue and corresponding Temperature htcal.getline(nix,49); htcal>>xTemp; htcal.getline(nix,49); TRACE (" Number of Temperatures = %d",xTemp); double** HTCalData = new double*[2]; for (i=0;i<2;i++) HTCalData[i]=new double[xTemp]; // Fill array with Data of AvHue.dat for (i=0;i<xparticles;i++) { // Only for Documentation // avhue >>pos>>x>>x>>x>>AvHue>>x; avhue >>pos>>x>>x>>x>>AvHue>>x; AvHueData[0][i]=pos; AvHueData[1][i]=AvHue; } avhue.close(); // Fill array with Data of HTCal.dat for (i=0;i<xTemp;i++) { // Only for Documentation // htcal>>Hue>>Temp; htcal >>Hue>>Temp; HTCalData[0][i]=Hue; HTCalData[1][i]=Temp; } TRACE (" Temp 7 = %d",HTCalData[1][6]); TRACE (" Temp 1 = %d",HTCalData[1][0]); htcal.close(); // Calculate Temperature for each Particle for (i=0;i<xparticles;i++) { // Test if Extrapolation is required if (AvHueData[1][i]>=HTCalData[1][xTemp-1]) { lingr=(HTCalData[1][xTemp]-HTCalData[1][xTemp-1])/(HTCalData[0][xTemp]-HTCalData[0][xTemp-1]); axin=HTCalData[1][xTemp]-lingr*HTCalData[0][xTemp-1]; Temp=lingr*AvHueData[1][i]+axin; } else { j=1; while (AvHueData[1][i]>HTCalData[0][j]) { j+=1; } lingr=(HTCalData[1][j]-HTCalData[1][j-1])/(HTCalData[0][j]-HTCalData[0][j-1]); axin=HTCalData[1][j]-lingr*HTCalData[0][j-1]; Temp=lingr*AvHueData[1][i]+axin; } xyT<<AvHueData[0][i]<<"\t"<<Temp<<"\n"; } // Close Streams xyT<<flush; xyT.close(); // Delete Dynamic Array from Memory for (i=0;i<2;i++) delete [] AvHueData[i] ; delete [] AvHueData; for (i=0;i<2;i++) delete [] HTCalData[i] ; delete [] HTCalData; }