Pufferüberlaufproblem



  • Hi!
    Wenn ich probiere mein Projekt zu releasen kommt immer folgende fehlermeldung:

    "Facharbeit.exe": "C:\Users\Vali\Desktop\Facharbeit\Programm\Facharbeit\Release\Facharbeit.exe" geladen, Symbole wurden geladen.
    "Facharbeit.exe": "C:\Windows\SysWOW64\ntdll.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\kernel32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\KernelBase.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Users\Vali\Desktop\Facharbeit\Programm\Facharbeit\Release\SDL.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
    "Facharbeit.exe": "C:\Windows\SysWOW64\advapi32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\msvcrt.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\sechost.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\rpcrt4.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\sspicli.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\cryptbase.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\gdi32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\user32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\lpk.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\usp10.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\winmm.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\msvcr100.dll" geladen, Symbole wurden geladen.
    "Facharbeit.exe": "C:\Windows\SysWOW64\msvcp100.dll" geladen, Symbole wurden geladen.
    "Facharbeit.exe": "C:\Windows\SysWOW64\imm32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\msctf.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Program Files (x86)\Kaspersky Lab\Kaspersky Internet Security 2011\mzvkbd3.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\psapi.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Program Files (x86)\Kaspersky Lab\Kaspersky Internet Security 2011\mzvkbd3.dll" entladen.
    "Facharbeit.exe": "C:\Windows\SysWOW64\psapi.dll" entladen.
    "Facharbeit.exe": "C:\Program Files (x86)\Kaspersky Lab\Kaspersky Internet Security 2011\sbhook.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\psapi.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\ole32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_d08a205e442db5b5\msvcr80.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Program Files (x86)\Kaspersky Lab\Kaspersky Internet Security 2011\sbhook.dll" entladen.
    "Facharbeit.exe": "C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_d08a205e442db5b5\msvcr80.dll" entladen.
    "Facharbeit.exe": "C:\Windows\SysWOW64\ole32.dll" entladen.
    "Facharbeit.exe": "C:\Windows\SysWOW64\psapi.dll" entladen.
    "Facharbeit.exe": "C:\Windows\SysWOW64\ddraw.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\dciman32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\setupapi.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\cfgmgr32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\oleaut32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\ole32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\devobj.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\dwmapi.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\ddraw.dll" entladen.
    "Facharbeit.exe": "C:\Windows\SysWOW64\dwmapi.dll" entladen.
    "Facharbeit.exe": "C:\Windows\SysWOW64\setupapi.dll" entladen.
    "Facharbeit.exe": "C:\Windows\SysWOW64\devobj.dll" entladen.
    "Facharbeit.exe": "C:\Windows\SysWOW64\oleaut32.dll" entladen.
    "Facharbeit.exe": "C:\Windows\SysWOW64\ole32.dll" entladen.
    "Facharbeit.exe": "C:\Windows\SysWOW64\cfgmgr32.dll" entladen.
    "Facharbeit.exe": "C:\Windows\SysWOW64\dciman32.dll" entladen.
    "Facharbeit.exe": "C:\Windows\SysWOW64\uxtheme.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Fraps\fraps32.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
    "Facharbeit.exe": "C:\Windows\SysWOW64\dwmapi.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\KBDUS.DLL" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\KBDUS.DLL" entladen.
    "Facharbeit.exe": "C:\Windows\SysWOW64\KBDGR.DLL" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\KBDGR.DLL" entladen.
    "Facharbeit.exe": "C:\Windows\SysWOW64\ole32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\clbcatq.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\oleaut32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\opengl32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\glu32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\ddraw.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\dciman32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\setupapi.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\cfgmgr32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\devobj.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\atiglpxx.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\atioglxx.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\version.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\atiadlxy.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\shell32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\shlwapi.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\userenv.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\profapi.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\wtsapi32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\psapi.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\wintrust.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\crypt32.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\msasn1.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\atigktxx.dll" geladen, Cannot find or open the PDB file
    "Facharbeit.exe": "C:\Windows\SysWOW64\aticfx32.dll" geladen, Cannot find or open the PDB file
    Durch einen Pufferüberlauf in Programm.exe wurde der interne Programmzustand beschädigt. Klicken Sie auf "Unterbrechen", um das Programm zu debuggen, oder auf "Weiter", um es zu beenden.

    Weitere Informationen finden Sie im Hilfethema "Gewusst wie: Debugging von Pufferüberlaufproblemen".
    Das Programm "[5144] Programm.exe: Systemeigen" wurde mit Code 0 (0x0) beendet.

    Das mit den PDB files hat ich schon gegooglet und da hab ich rausgefunden, dass das zumindest angeblich unwichtig ist.
    Was mir mehr Sorgen macht ist der Pufferüberlauf.
    Das Programm endet jedes mal bei einer meiner Funktionen in meiner Klasse:

    class CQuader {
    public:
    	// Deklaration der Eckpunkte als Arrays 
    	int A[4];		// vorne, links, unten
    	int B[4];		// vorne, rechts, unten
    	int C[4];		// vorne, rechts, oben
    	int D[4];		// vorne, links, oben
    	int E[4];		// hinten, links, unten
    	int F[4];		// hinten, rechts, unten
    	int G[4];		// hinten, rechts, oben
    	int H[4];		// hinten, links, oben
    	void Create(int breite, int hoehe, int laenge);
    	//Transformationsfunktionen:
    	void Rotation(float alpha, char axis);
    	void Translation(int t1, int t2, int t3);
    	void Skalierung(int s);
    };
    

    und hier die Funktion bei der das Programm immer hängen bleibt und abstürzt(Zumindest verweist VC++2010 mich immer dahin)

    void CQuader::Skalierung(int s){
    	//Skalierungsmatrix erstellen
    	int Sm[3][3];
    	Sm[0][0] = s;
    	Sm[1][1] = s;
    	Sm[2][2] = s;
    	Sm[3][3] = 1;
    	int Reihe;
    	int Spalte;
    	//restlichen, leere Felder mit 0 ausfüllen
    	for (int Reihe = 0; Reihe <= 3; Reihe++)
    	{
    		for(Spalte = 0; Spalte <= 3; Spalte++)
    		{
    			if(Sm[Reihe][Spalte] != s || Sm[Reihe][Spalte] != 1)
    				Sm[Reihe][Spalte] = 0;
    		}
    	}
    	// Matrizenmultiplikation mit A
    	int Tempmatrize[3];
    	for(Reihe = 0; Reihe <= 3; Reihe++)
    	{
    		int Ergebnis = 0;
    		for(Spalte = 0; Spalte <= 3; Spalte++)
    		{
    			Ergebnis += Sm[Reihe][Spalte] * A[Spalte];  //In dieser Zeile erscheint dann immer der Pfeil, auch beim Debuggen
    		}
    		Tempmatrize[Reihe] = Ergebnis;
    	}
    	for(int i = 0; i <= 3; i++)
    	{
    		A[i] = Tempmatrize[i];
    	}
    }
    

    Das Programm soll zur Umsetzung von teilen der Grafikpipeline dienen. Die grafische Ausgabe hab ich vor mit OpenGL und SDL zu machen.

    Und eine weitere Frage hät ich noch:
    Hat einer eine gute Idee wie ich den Abschnitt ab der Multiplikation mit den anderen Arrays einfach wiederholen lassen kann ohne ihn 8 mal hinzuschreiben? Mir ist irgendwie kein vernünftiger Algorithmus dafür eingefallen...



  • Wenn du ein Array so definierst
        int Sm[3][3];
    Darfst du nur bis <=2 gehen.



  • Och nöö..
    Musste ja son dummer Fehler sein! 😞
    Aber Danke für die schnelle Antwort!



  • Und statt <= 2 ist es in Schleifen üblich < 3 zu schreiben, wenn 3 die grösse eines Arrays/Vektors/... ist.

    Moerill schrieb:

    Och nöö..
    Musste ja son dummer Fehler sein! 😞

    Sei doch froh dass es so schnell zu finden war 🙂



  • hustbaer schrieb:

    Sei doch froh dass es so schnell zu finden war 🙂

    Ja schon, aber es ärgert mich, dass ich so lang dran gesessen hab und den nicht gefunden hab 😞


Log in to reply