Programmcrash

alamos

Grünschnabel
Hallo,

ich hoffe ihr könnt mir bei meinem Problem helfen. Und zwar habe ich mir eine Klasse IDEA gescrhieben und wollte eine Methode dieser Klasse testen. Nach dem ich das Programm zum testen aber kompilier und ausführe stürtzt es immer ab. Vielleicht wisst ihr ja woran es liegen könnte. Also die Methode heisst computeSubKeys und bekommt als Eingabe einen Zeiger und soll als Ausgabe auch einen Zeiger zurückgeben. Näheres siehe unten. p.s. Ich benutzte den Bloodshed Dev-C++ Compiler v.4.9.9.2.

Code:
#include <cstdlib>
#include <iostream>
#define WORD unsigned short int

class IDEA
{
      public:

      WORD* computeSubKeys(WORD *key_pt) //128 Bit Key
      {
            WORD SubKey[55]; // 52 * 16 Bit SubKeys + 4 * 16 Bit Overhead 55
            WORD* pt_SubKey = &SubKey[0];
            WORD Key[7];
            WORD RotatedKey[7];
           
            // alles hier zwischen kann ich auskommentieren und es stürtzt trotzdem ab
           // daher lasse ich es weg.
            
            return pt_SubKey;
            }   
};


Und der Code zum testen....

Code:
#include <cstdlib>
#include <iostream>
#include <E:\Projekte\C\EncryptionTool\idea.cpp>
#define WORD unsigned short int

using namespace std;

int main(int argc, char *argv[])
{
    IDEA text;
    
    WORD Key[7];
    WORD SubKey[55];
    WORD* pt_Key = &Key[0];
    WORD* pt_SubKey;
    
    printf("%x %x", pt_Key, pt_SubKey);
    pt_SubKey = text.computeSubKeys(pt_Key);

    system("PAUSE");
    return EXIT_SUCCESS;
}

gruß,

Martin

editiert von Matthias Reitinger: Bitte nächstes mal den Quelltext in CODE-Tags setzen, damit die Formatierungen nicht verloren gehen! Danke :)
 
Der Absturz dürfte nicht in der Methode "computeSubKeys()" sondern schon beim "printf()" erfolgen. Du verwendest dort den Zeiger "pt_Subkey", der aber erst beim Methodenaufruf einen gültigen Wert erhält. Oder hast du beim posten des Codes versehentlich diese beiden Zeilen vertauscht?
 
Nein du hattest recht, daran liegt der Absturz, aber dennoch terminiert das Programm nicht. Ich habe das printf jetzt hinter den methodenaufruf gepackt aber bei Ausführung wird es gar nicht mehr ausgegeben und es steht auch nichts von wegen "eine beliebige taste drücken", was ja normalerweise der Fall sein sollte.
 
Zuletzt bearbeitet:
Ok jetzt gehts. Das das Prog dann nicht temrinierte lag an dem Teil in der Klasse, den ich hier weggelassen hatte :) Dank dir
 
Hi alamos,

ist das der gesamte Code mit dem Du getestet hast? - oder liegt der Fehler in Deinem auskommentierten Teil?
Dat Proggi läuft bei mir anstandslos durch

Gruss
Stefan
 
Wie gesagt es lag schon an dem printf("%x %x", pt_Key, pt_SubKey);
, weil pt_SubKey noch keinen Wert hatte bzw. evtl mit einem initialisiert wurde der das Programm dann abstürzen ließ. Danach hatte ich noch ein Problem , der lag dann aber an dem auskommentierten Teil.
 
Zurück