alokacja pamięci

0

Witam,

Mam następujący problem. Po uruchomieniu podanego niżej kodu program wysypuje się w miejscu "return colii;". Przypuszczam, że to jakiś błąd z alokacją pamięci.
Prosiłabym o wskazówkę, co jest nie tak.

IntegralImage** LoadColorPosNegSamples(int IItype){
	ImageReader ireader;
	ColorImage * colimg;
	IntegralImage **colii=new IntegralImage*[len];

	for(unsigned int i = 0; i < len; i++){
	cout<<"i= "<<i<<endl;	
			colimg=ireader.ReadPPM(fpathes[i]);
			
				colii[i]=new IntegralImage[3];
							
		for(int j=0;j<3;j++){
		colimg->channel[j]->SetId(i);
		colii[i][j] = IntegralImage(); //stworzenie obrazu zsumowanego
			if(2 == IItype){ //obydwa typy II
				colii[i][j].CreateFullIntegralImage(colimg->channel[j]);
			}
			else if(1 == IItype){ //tylko obrocony II
				colii[i][j].CreateTiltedIntegralImage(colimg->channel[j]);
			}
			else if(0 == IItype){ //tylko prosty II
				colii[i][j].CreateIntegralImage(colimg->channel[j]);
			}
			else{ //nieobslugiwany
			Exception pex("Unsupported Integral Image Type", 0);
			throw pex;
			}
		}
		free(colimg);
	}
	
		return colii;
}
1

Pomijając dziwne Yoda-conditions, to skąd możemy z tego malutkiego kawałku kodu wywnioskować co jest źle?
Nawet nie raczyłaś powiedzieć, czym jest to IntegralImage i cała reszta.
Jedyną odpowiedzią byłoby więc: użyj debuggera!

0

Wydaje mi się, że tu nie ma znaczenia, czym jest IntegralImage. Uznajmy, że to po prostu typ, którego tablicę dwuwymiarową chcę stworzyć.
Czasem program się nie wyspuje. Ale że muszę w programie użyć tej funkcji kilka razy pod rząd, to wysypuje się dopiero przy drugim, czy trzecim wołaniu tej funkcji.

0

Ok, chyba faktycznie gdzie indziej był błąd. Skorzystałam z debugera, mimo, że wcześniej wydawało mi się, że wypisuje jakiś inny błąd.
Błąd był przy usuwaniu elementu typu ColorImage.
Wydaje mi się, że teraz działa. Dziękuję :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1