AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein "public-Pointer" wird nach Verlassen einer Fkt. zerstört?
Thema durchsuchen
Ansicht
Themen-Optionen

"public-Pointer" wird nach Verlassen einer Fkt. zerstört?

Ein Thema von Elko · begonnen am 7. Okt 2008 · letzter Beitrag vom 7. Okt 2008
 
Elko

Registriert seit: 2. Feb 2008
52 Beiträge
 
Delphi 7 Personal
 
#1

"public-Pointer" wird nach Verlassen einer Fkt. ze

  Alt 7. Okt 2008, 13:20
Hallöchen
Ich stehe mal wieder vor einem Rätsel... Ich habe in meinem C-Projekt einen "public-Zeiger" (falls man das so nennt) deklariert:
Code:
MIXED_ROMCODE *rommix;
Jetzt rufe ich eine Funktion auf, die diesen Zeiger benutzt und den Speicher, auf den der Zeiger zeigt mit
Code:
rommix = (MIXED_ROMCODE*) realloc(rommix, (rom_anzahl+1)*sizeof(MIXED_ROMCODE));
erweitert.
Letztendlich greife ich dann -wenn die Funktion durchlaufen wurde auf den Inhalt des Zeigers "rommix" zu und das Programm stürzt ab. Ich habe mir mal die Adresse, auf die rommix nach der Funktion zeigt, mal ausgeben lassen: 0
Ich habe schon viel gegoogelt und folgendes gefunden:

Zitat:
Unser letztes Beispiel zu den Rückgabewerten von Funktionen behandelt das Problem "verwaisten" Speichers. Ein solcher kann entstehen, wenn ein Zeiger zurückgegeben wird. Voraussetzung dafür ist, daß die aufgerufene Funktion mit Hilfe von malloc() Speicher anfordert, in dem sie ihre Daten ablegt. Speicherplatz, den die dynamische Speicherverwaltung zur Verfügung stellt, bleibt auch nach dem Verlassen der Funktion, in der er angefordert wurde, reserviert — und zwar so lange, bis er explizit mit free() wieder freigegeben wird. Im Gegensatz dazu sind Pointer, mit denen darauf zugegriffen werden kann, dann nicht mehr vorhanden. Versäumt es nun der Programmierer, den Wert dieser Pointer in einer Variablen des Aufrufers abzuspeichern, dann gibt es keine Möglichkeit mehr, auf den "ge-malloc-ten" Speicher zuzugreifen: Die automatische Pointer-Variable der gerufenen Funktion wurde ja nach deren Beendigung zerstört
Macht das Sinn??? Warum wird eine "pubilc-Pointer-Variable" nach Verlassen der Funktion zerstört?

Gruß,
Elko
Keyboard not found. Press any key to continue.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz