1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Probleme bei der Speicherfreigabe

    • Frage
  • fabbishmain
  • 22. November 2005 um 18:25
  • Unerledigt
  • fabbishmain
    2
    fabbishmain
    Mitglied
    Punkte
    40
    Beiträge
    6
    • 22. November 2005 um 18:25
    • #1

    Hallo!

    Ich habe folgendes Problem:

    Ich habe eine Klasse Angles, die ein doubleArray variabler Größe aufnehmen soll. In dieses Array sollen Winkel gespeichert werden.

    Nun möchte ich Objekte dieser Klasse Angles in einen Vektor speichern bzw. Objekte kopieren usw. Dazu wurde von mir ein Kopierkonstruktor gebaut, der neuen Speicher auf dem Heap reserviert, um dieses Array zu speichern.

    Wenn ich nun Objekte kopiere, funktioniert dies ganz gut. Allerdings werden beim Speichern dieser Objekte in den Vektor anscheinend nur die Referenzen übernommen und kein neuer Speicher auf dem Heap reserviert. Wenn ich nun ein tenporäres Objekt erzeuge und in einen Vektor speichere, dann kracht es am Ende der Funktion, weil der Destruktor der Angleklasse aufgerufen wird und den Speicher wieder freigibt, aber anscheinend das Objekt im Vektor immer noch auf die freigegebene Stelle zeigt.

    Was für eine Lösung würdet ihr mir hierfür vorschlagen? Ich habe mal was von Smartpointern oder Referenzzählern gehört, aber was ist die einfachste (und effizienteste) Lösung? Leider scheint das Problem auch noch an anderen Stellen aufzutreten...

  • fabbishmain
    2
    fabbishmain
    Mitglied
    Punkte
    40
    Beiträge
    6
    • 16. Dezember 2005 um 16:47
    • #2

    Hm,

    hat denn niemand hier eine Idee?

    Wieso kann man kein lokales Objekt in einem Vektor speichern und später darauf zugreifen? Wird es einfach mitgelöscht und der Vektor merkt sich nur die Stelle im Speicher, an der es stehen sollte? Normal ist das nicht...

  • kyp
    3
    kyp
    Mitglied
    Punkte
    45
    Beiträge
    9
    • 18. Dezember 2005 um 13:31
    • #3

    wie wärs mit codefragmenten?
    welche programmiersprache?
    in c musst neue speicherreservierungen selbst machen - eh ned vergessen?

    mfg

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 18. Dezember 2005 um 16:25
    • #4
    Zitat von fabbishmain

    Wieso kann man kein lokales Objekt in einem Vektor speichern und später darauf zugreifen? Wird es einfach mitgelöscht und der Vektor merkt sich nur die Stelle im Speicher, an der es stehen sollte?


    Falls es hier um C++ geht: Ja, lokale Objekte (die nicht als static deklariert sind) werden am Ende des Blocks, in dem sie deklariert sind, zerstört. Das läßt sich nicht verhindern, Punkt.
    Wenn du im Vector Referenzen bzw. Pointer speichern willst, mußt du die Objekte dafür dynamisch anlegen.

    *plantsch*

  • fabbishmain
    2
    fabbishmain
    Mitglied
    Punkte
    40
    Beiträge
    6
    • 15. Januar 2006 um 21:04
    • #5

    Ja, es handelt sich um C++. Der letzte Beitrag scheint es ziemlich genau zu treffen, zu der Schlussfolgerung bin ich inzwischen auch gelangt.

    Vielen Dank schonemal

  • Zee(CD)Dee
    6
    Zee(CD)Dee
    Mitglied
    Punkte
    280
    Beiträge
    48
    • 8. Februar 2006 um 13:41
    • #6

    Mein Gedankengang:Eigentlich müsste es doch möglich sein die Objekte im Vector zu makieren und mit dem OLE Beabeitungs Tool einzeln zu bearbeiten, also wenn das dein Problem ist das du nicht mehr in die Bearbeitung reinkommst solltest dir sowas zulegen sonst.....weiter überlegen.....Sorry

    http:\\http://www.mm-design.at

  • Jensi
    28
    Jensi
    Mitglied
    Reaktionen
    141
    Punkte
    8.486
    Beiträge
    1.649
    • 8. Februar 2006 um 15:37
    • #7
    Zitat von Zee(CD)Dee

    die Objekte im Vector zu makieren und mit dem OLE Beabeitungs Tool einzeln zu bearbeiten

    Hä?

  • Zee(CD)Dee
    6
    Zee(CD)Dee
    Mitglied
    Punkte
    280
    Beiträge
    48
    • 8. Februar 2006 um 21:03
    • #8

    Was ich eigentlich sagen will ist das es mit dem Allokator zusammen hängt, der für die Reservierung und Freigabe von Speicher verantwortlich ist.Jedenfalls probier es mit pointer allocate (size_type,allocator ::const_pointer hint = 0);theoretisch sollte das die Speicherreservierung ermöglichen....weiter überleg....Sorry

    http:\\http://www.mm-design.at

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung