Kompliziertes Problem mit einem Struct



  • Hallo,

    habe ein etwas kompliziertes Problem mit einem struct.

    Der struct wird wie folgt angelegt:

    /* in einem Header-File a.h*/
    typedef struct {
        int     area;
        int     id;
        int     dir;
        double  cf;
        double  pos[2];
        double  line[4][3];
        double  vertex[4][2];
    } ARMarkerInfo;
    
    /* in einem Header-File b.h*/
    #include <a.h>
    ....
    /* Markerdetect */
    ARMarkerInfo*	marker_info;
    

    Dann übergebe ich die Adresse des Structs an eine Libary,
    die diesen mit Werten füllen soll.

    /* wird in einer Schleife immer wieder durchlaufen */
    if( function( data, thresh, &marker_info, &marker_num ) < 0 ) {
    
      cleanup();
      exit(0);
    }
    

    Ich hab leider keine Möglichkeit, in die Libary einzugreifen.
    Nun erhalte ich folgende Fehlermeldung:

    DAMAGE: after Normal block (#259) at 0x05D3C2D0.
    Normal located at 0x05D3C2D0 is 18 bytes long.
    DAMAGE: after Normal block (#203) at 0x05D3AF20.
    Normal located at 0x05D3AF20 is 12 bytes long.
    DAMAGE: after Normal block (#91) at 0x05D379C0.
    Normal located at 0x05D379C0 is 12 bytes long.
    DAMAGE: after Normal block (#259) at 0x05D3C2D0.
    Normal located at 0x05D3C2D0 is 18 bytes long.
    DAMAGE: after Normal block (#203) at 0x05D3AF20.
    Normal located at 0x05D3AF20 is 12 bytes long.
    DAMAGE: after Normal block (#91) at 0x05D379C0.
    Normal located at 0x05D379C0 is 12 bytes long.
    Second Chance Assertion Failed: File dbgheap.c, Line 346
    Unbehandelte Ausnahme bei 0x778813b1 in BlueBox.exe:
    Benutzerhaltepunkt

    Dies ist die Adresse vom Struct!

    Wo ich jedoch am Anfang alles in einer Datei stehen hatte, funktionierte es
    ohne Probleme!?

    Hat jemand eine Idee, einen Anhaltspunkt, wo ich was falsch gemacht habe?

    Gruß und Dank!



  • hast du genug Speicher alloziert??



  • Du hast an den erwähnten Stellen unerlaubt in den Speicher geschrieben. Allokiere dir selbst welchen.

    Bye, TGGC (Denken, und gut ist.)



  • Wie mache ich das genau?
    Mit malloc oder mit new?
    Bin leider nicht der beste mit C!



  • marker_info=(marker_info*)malloc(sizeof(marker_info));
    marker_info->id=...
    marker_info->........
    ...........
    


  • /bin/bash0R schrieb:

    marker_info=(marker_info*)malloc(sizeof(marker_info));
    marker_info->id=...
    marker_info->........
    ...........
    
    marker_info=malloc(sizeof(*marker_info));
    


  • Welche Parameter (Datentypen) erwartet deine Funktion eigentlich?


Log in to reply