[C++] unerklärliches ändern einer variable

cycovery

Erfahrenes Mitglied
Hi!

Ich steh grad ziemlich auf dem schlauch...

Ich hab folgende funktion:

Code:
CvMat* CToolDePerspective::MulMat( CvMat* A, CvMat* B )
{
	if(A->type != B->type)
		return NULL;
	
	int type = A->type;
	int rows = A->rows;
	int cols = B->cols;

	CvMat* res = cvCreateMat(rows, cols, type);

	cvMatMul(A,B,res);

	return res;
}

die funktion soll eigentlich lediglich die Matrixmultiplikation von openCV etwas vereinfachen.
cvCreateMat() und cvMatMul sind funktionen von opencv zum allozieren einer neuen matrix und zur multiplikation von zwei matrizen.

Ok - das seltsame passiert nun beim debuggen zwischen den beiden roten zeilen

Und zwar ändert sich nach ausführen der ersten und vor ausführen der zweiten der (pointer)Wert von A (und damit steht natürlich nurnoch nonsense in den feldern von A)

Das passiert allerdings nicht immer . . .

kann mir einer sagen wie sich da zwischen diesen Zeilen A ändern kann?

Dankeschön!


hier noch eine kurze erläuterung zum umgang mit openCV matrizen:
http://www.cs.iit.edu/~agam/cs512/l...opencv-intro.html#SECTION00061000000000000000

normalerweise geht das mit dem multiplizieren auch . . . nur nicht in dieser methode . . .
 
Und wieso verändert sich dann der Wert des Pointers zwischen diesen zwei Zeilen? Also es ist wirklich pointeradresse, die sich ändert! nicht einfach der Inhalt des speichers an der Stelle wo er hinzeigt . . .
 
Kreis doch mal die Fehlerquellen ein.

Wir können jetzt auch schlecht sagen wieso dein Zeiger auf einmal
auf einen falschen Bereich zeigt, dafür ist einfach zu wenig Code da.

Eventuell ist auch A oder B fehlerhaft, oder beide..
 
Arbeitest du mit VC?
ich kann dir auch nicht sagen warum, aber mir ist das auch schon passiert
lässt sich normal lösen, wenn man halt den wert einer kleinen hilfsvariable zuweist und nach der stelle wieder in die alte var reinkopiert
 
Zurück