Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Kompliziertes Problem mit einem Struct

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
13.01.2005, 12:27 Uhr
dad_an_der_fh



Hallo,

habe ein etwas kompliziertes Problem mit einem struct.

Der struct wird wie folgt angelegt:


C++:
/* 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.


C++:
/* 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!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.01.2005, 13:06 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


kann es sein das du den speicher in der lib allokierst, ihn aber im programm dann wieder freigibst? sowas kann probleme geben (achja ist die lib eine dll? wenn ja dann ists klar, ansonsten probier mal bei der debugversion auch die debug-lib mitzulinken, nicht die release, sonst gibts probs)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.01.2005, 20:08 Uhr
~Gast
Gast


Hallo, vielleicht Hilft es ja.


Zitat von dad_an_der_fh:

ARMarkerInfo* marker_info;

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



marker_info ist kein gültiger Zeiger.

ARMarkerInfo Struct;
ARMarkerInfo* marker_info = & Struct;

Jetzt ist er gültig.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.01.2005, 09:08 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


stimmt, ganz übersehen, du solltest vor dem übergeben auf deine lib mind ein element manuell hinzufügen, sonst haste KEINEN gültigen Zeiger nach dem sprung in die lib.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: