Beschädigung des Heaps?



  • das geht?^^



  • Achja, ich sehe gerade bei w=51 ist es eine andere Fehlermeldung:

    Eine nicht behandelte Ausnahme des Typs "System.Runtime.InteropServices.SEhExpception" ist in sspb.exe aufgetreten.

    Zusätzliche Informationen: Eine externe Komponente hat eine Ausnahme ausgelöst.

    lf help 😞



  • Jetzt ist dein Heap hin und du muss dir nen neuen kaufen. :p

    Du schreibst wahrscheinlich irgendwo über arraygerenzen raus.



  • Nutzt du Threads?
    Ne andere Lösung fällt mir da echt nicht ein...
    "Eine externe Komponente hat eine Ausnahme ausgelöst." => iwo musst du wo nen try-catch drumpacken, kann das sein?



  • ne, ist single threaded.
    und keine ahnung, wo ich da nen try catch block einbinden sollte.



  • Schräges Problem..

    Dazu fällt mir nur das ein:

    "Wenn der RAM leuchtet und brennt, der Programmierer aus dem Zimmer rennt." 😃



  • also wenn du die zeilen weglässt geht es auch mit den werten? ich glaube nämlich noch nicht daran ;P

    //edit:
    hat leider nix damit zu tun... ^^

    short *colorCount=NULL; //wieso?
        COLORREF* colors=NULL; //wieso?
        colors = new COLORREF[arrsize];
        colorCount = new short[arrsize]; 
    /*
        short *colorCount = new COLORREF[arrsize]; //<<----- stürzt ab bei w=51 
        COLORREF* colors = new short[arrsize]; 
    */
    


  • unskilled schrieb:

    also wenn du die zeilen weglässt geht es auch mit den werten? ich glaube nämlich noch nicht daran ;P

    //edit:
    hat leider nix damit zu tun... ^^

    short *colorCount=NULL; //wieso?
        COLORREF* colors=NULL; //wieso?
        colors = new COLORREF[arrsize];
        colorCount = new short[arrsize]; 
    /*
        short *colorCount = new COLORREF[arrsize]; //<<----- stürzt ab bei w=51 
        COLORREF* colors = new short[arrsize]; 
    */
    

    Wenn ich das und alles was mit colors und colorCount zusammenhängt auskommentiere, stürzt er wie bei den anderen Werten bei "delete [] bBytes" ab.



  • Hallo

    Der Speicher für die Bitmap ist zu klein. Jede Zeile der Bitmap beginnt an einer durch 4 teilbaren Adresse. Falls nötig werden dummy-Bytes eingefügt, für die du keinen Speicher reserviert hast.
    So müsste es funktionieren:

    bBytes= new byte[((w*BytePerPixel+3)&~3)*h];
    

    Gruss Chris



  • ich meinte, du solltest erst ma nur das delete auskommentieren und sagen, obs dann geht ^^ aber anscheind is jz dein prob eh gelöst ^^



  • bislang konnt ich das Programm mit der Änderung nicht zum abstürzen bringen...scheint also des Rätsels Lösung zu sein.
    Danke!


Anmelden zum Antworten