Frage zu "Visual C++ 2005 Express Edition": dynamische Arrays im Debugger betrachten



  • busenbach schrieb:

    ehrlich? ich dachte wenn man einmal mit "vector" eine VariableReihe festlegt dann bleibt diese auch bis Programmende so fest, ohne dass man den Speicher wieder freigeben kann. Irre ich mich da?

    Ich weiß ja nicht, wo du sowas gelesen hast, aber ein std::vector<> ist ein dynamisch erweiterbares Array, das je nach Bedarf wachsen und auch wieder schrumpfen kann. (und für viele Anwendungen auch die schnellste Alternative - wenn nicht, gibt es noch deque<>, list<>, set<>, map<> etc).

    PS: TRACE und seine Kollegen funktionieren wie printf() - mit dem Unterschied, daß sie in das Ausgabefenster des Debuggers schreiben anstatt auf die Konsole (TRACE() als VarArg-VAriante, TRACE0 bis TRACE3 spezialisiert für 0 bis 3 Werte).



  • CStoll schrieb:

    busenbach schrieb:

    ehrlich? ich dachte wenn man einmal mit "vector" eine VariableReihe festlegt dann bleibt diese auch bis Programmende so fest, ohne dass man den Speicher wieder freigeben kann. Irre ich mich da?

    Ich weiß ja nicht, wo du sowas gelesen hast, aber ein std::vector<> ist ein dynamisch erweiterbares Array, das je nach Bedarf wachsen und auch wieder schrumpfen kann. (und für viele Anwendungen auch die schnellste Alternative - wenn nicht, gibt es noch deque<>, list<>, set<>, map<> etc).

    PS: TRACE und seine Kollegen funktionieren wie printf() - mit dem Unterschied, daß sie in das Ausgabefenster des Debuggers schreiben anstatt auf die Konsole (TRACE() als VarArg-VAriante, TRACE0 bis TRACE3 spezialisiert für 0 bis 3 Werte).

    ach so, wusste ich gar nicht! werde mal bei Gelegenheit reinschauen, denn im Moment komme ich mit new[] und delete[] recht gut zurecht
    (-->bis auf, dass ich beim DEBUGGER nicht die ganzen Arraywerte gleichzeitig im Fenster anschauen kann, sondern stattdessen immer jede einzeln anwählen muss 😞 )
    Naja, vielleicht finde ich noch einen Weg

    -->Muss ich bei TRACE was "#includen"? Der findet das nicht



  • Du dürftest TRACE nicht nutzen können, weil das zur MFC gehört. Die ist in der Express Edition nicht dabei.

    Schaue dir einfach mal die Nutzung von std::vector an und dein Problem ist gelöst.



  • Hier gehts ja eher um C++ als um VC, ich schieb mal. 🙂



  • Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Dü könntest im Debuggger einfach den Variablennamen eingewben, und dahinter ein komma schreiben, und wiederum dahinter die länge des arrays.
    Also AddWatch -> Untem im Watch-Fenster komma und länge hizufügen, und fertig!



  • estartu schrieb:

    Hier gehts ja eher um C++ als um VC, ich schieb mal. 🙂

    Standard-C++ kennt weder Debugger noch TRACE-Makros. Das ist ein reines IDE-Problem.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Pellaeon schrieb:

    Du dürftest TRACE nicht nutzen können, weil das zur MFC gehört. Die ist in der Express Edition nicht dabei.

    Schaue dir einfach mal die Nutzung von std::vector an und dein Problem ist gelöst.

    ist eigentlich nicht ganz die elegante Lösung kurzerhand mal die ganze Programmierung wegen so was umzustellen, aber habe jetzt ENDLICH herausgefunden wie es funktioniert. Für alle die es wissen wollen:

    -->Wenn ein Array dynamisch erstellt wurde (z.B. int *var; var=new int [10] ) dann kann man sich das im Debugger ganz einfach direkt anzeigen lassen indem man es so eingibt
    "var,n" (hier: n=10)

    Der Debugger zeigt dann direkt den Inhalt der nächsten 10 Speicheradressen genau so an wie wenn man es ganz normal erstellt hätte.



  • Gfdge schrieb:

    Dü könntest im Debuggger einfach den Variablennamen eingewben, und dahinter ein komma schreiben, und wiederum dahinter die länge des arrays.
    Also AddWatch -> Untem im Watch-Fenster komma und länge hizufügen, und fertig!

    ach, es gab ja noch eine 2te Seite! hatte ich ganz übersehen.
    Ganz genau das hatte ich gemeint.
    Trotzdem Danke!


Anmelden zum Antworten