Zugriff auf eine Vectorliste

fujitsufan

Erfahrenes Mitglied
Hallo zusammen,

ist die Verwendung eine Vectorliste „vBohrungY“ in einer typedef struct überhaupt möglich.

Folgendes:
//header
Code:
typedef struct tLEISTEPARAM
{
      int iKennung;
      char cBohrungZeich[8];
      double dLaenge, dBreite, dHoehe;
      double dOffsetX, dOffsetY;
      double dBohrungD, dBohrungX;
      double dMatStaerke;
      double dBiegeRadius;
      vector <double> vBohrungY;
      

} stLEISTEPARAM;

bool ErzeugeVerstaerkungLeiste(stLEISTEPARAM *sLeisteParam);


//cpp
Aufruf:
Code:
stLEISTEPARAM sLeisteParam;
ErzeugeVerstaerkungLeiste(&sLeisteParam);

Zugriff erfolgt in der Funktion:
Code:
bool ErzeugeVerstaerkungLeiste(stLEISTEPARAM *sLeisteParam)
{


     sLeisteParam->vBohrungY.push_back(-875.0);

}



Im Debugbetrieb funktioniert alles wunderbar.
Auf einem Rechner ohne Entwicklungsumgebung tritt beim Zugriff auf die Vectorliste der Absturz auf.

Sind die Vectorliste anders zu deklarieren?
Stellt hier der Debugugger Arbeitsspeicher zur Verfügung welcher auf dem Echtsystem gar nicht existiert?


Kann mir da jemand weiterhelfen?

Vielen Dank!

fujitsufan
 
Hi

schaut eigentlich gut aus.

Der Debugger stellt mengenmäßig nicht mehr Speicher zur Verfügung (wie denn auch),
aber auf jeden Fall läuft im Inneren vieles anders ab als bei Normalausführung
(auch eigene Libversionen etc.etc.)

Nicht das Netteste, aber Debuggen per Log/Konsolenausgaben ist auch möglich...
An verschiedenen Stellen Dateiausgaben + flush, um die Absturzstelle einzugrenzen.
Über den gefundenen Bereich das Selbe wieder dichter usw.
 
Hallo sheel,

Ich habe die Stelle ganz exakt eingegrenzt, mittels simpler Meldungsausgabe (Messagebox).
Mühsehlig aber man kommt zum Ziel.

Es passiert bei der Wertezuweisung in die Vectorliste "sLeisteParam->vBohrungY" mittels Funktion .push_back(.);
Code:
sLeisteParam->vBohrungY.push_back(-875.0);
Vor dieser Zuweisung gibt das Echtsystem eine Meldung noch auf, danach verabschiedet sich das System mit der
Mitteilung von Windows:

Programm funktioniert nicht mehr
blablabla



An einer anderen Stelle mache ich das selbe mit einer ähnlichen "typedef struct" Konstruktion.
Auch mit Vectorliste im "struct" und Zuweisung per ".push_back(.)" .
Da geht´s.


Wie kann ich weiter suchen, ich hab´keinen blassen Schimmer.

Hilfe, hilfe...
fujitsufan
 
Lass dir sLeisteParam ausgeben, als Adresse.
Irgendein seltsamer Wert (viele gleiche Ziffern,
wie 7ddddd, ccccccc, oder sogar 000000) oÄ.?
 
Hi.

Wie lautet die Meldung? Insbesondere wie lautet der Exception code?

Das typedef beim struct kannst du dir in C++ übrigens sparen.

Verwendest du Threads?

Tritt der Fehler nur auf wenn du im Release Modus kompilierst?

Erstelle dein Programm mit Debuginformationen und führe es auf dem entsprechenden Rechner aus. Falls es abstürzt, hängst du dich mit WinDebug oder gdb rein (Stichwort: JIT Debugging) und schaust auf die Stelle wo der Absturz passiert ist.

Welchen Compiler verwendest du?
 
Hallo zusammen,

vielen Dank.
Was ich erst wissen möchte ist:
Ist eine Vectorliste in einem "struct" grundlegend falsch, dass man dies vermeiden sollte?
Oder kann man damit, wie ich es euch dargestellt habe, arbeiten?

fujitsufan
 
Hallo sheel,

an der Stelle liegt die Vectorliste auf einer sauberen Adresse 0x18AB24.
Sieht mal soweit recht ordenlich aus.
Ich kann den Wert in die Vectorliste reinschreiben und danach wieder auslesen.
Erst dann stürtzt die Kiste ab.

So sieht die Fehlermeldung aus.
Meldung.png

mfG.
fujitsufan
 
Hm, bei mir kommt da immer ein Dialog wo man Details einblenden kann (http://i.stack.imgur.com/9z88U.png)

Aber im EventLog müsste der Exception Code stehen.

Welcher Compiler? Welches OS?

Ansonsten, z.B. WinDbg als JIT Debugger registrieren (WinDbg -I) und das Programm crashen lassen. Der Debugger sollte sich dann dranhängen können.
 
Hallo deepthroat,

der Abstrutz passiert nur auf einem Rechner auf dem keine MS VisualStudio Entwicklungsumgebung installiert ist.
Auf meinem Rechner ist WIN7 und MS VisualStudio installiert.
Da läufts im Debugmodus und Releasemodus, selbst wenn das Programm direkt installiert ist und ausgeführt wird.

Es muss irgend eine unterstützende Funktion von der Entwicklungsumgebung sein, die auf meinem Rechner den Absturz verhindert.


mfG.
fujitsufan
 
Zurück