Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » dynamische Speicherverwaltung

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
02.07.2004, 12:39 Uhr
~Firebird
Gast


HAllo ihr,

Mein problem ist das ich überall wo ich im Internet nachschau die dynamische Speicherverwaltung mit malloc und delete oder ähnlichen befehlen verbunben ist.
Es gibt doch aber auch Funktionen in c / c++ die das automatisch machen z.B. bei der Rekursion werden ja Variablen dynamisch zur Laufzeit angelegt.

Kann mir jemand noch ein Paar Beispiele Sagen bei denen der Speicher dynamisch angelegt wird.(Bitte im Rahmen bleiben und gängige Beispiele nennen).Bin noch am Anfang meiner Programmierlaufbahn!!

Mfg Firebird
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.07.2004, 12:50 Uhr
KaraHead



malloc ist C und delete ist C++.

Du benutzt die dynamische Speicherverwaltung immer wenn du z.B. Daten auf dem Heap und nicht auf den Stack legen willst, d.h. Sachen auf dem Heap werden nicht automatisch von der Funktion gelöscht sondern müssen eigenhändig mit free() oder delete gelöscht werden.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.07.2004, 13:42 Uhr
0xdeadbeef
Gott
(Operator)


FAQ lesen: https://ssl.secure-hosts.de/www.fun-soft.de/showtopic.php?threadid=4351
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.07.2004, 13:52 Uhr
freshman



hier ein paar Bsps:

C++:
/*Bsp: dynamische Speicherallokation für eine einzelne Variable vom Datentyp int*/
int * pNum=NULL;
//Speicher allokieren
num = new int;
//Speicher freigeben nicht vergessen!!
delete []pNum;

/*Bsp: dynamische Speicherallokation für eine zweidimensionale Matrix für Datentyp int*/
int ** matrix;
//Speicher allokieren
int numOfRows=..., numOfColumns=....;    
matrix = new int * [row];
for(int row=0; row<numOfRows ;row++){
  matrix[row] = new int[numOfColumns];
}
//arbeiten auf  matrix[i][j]
//Speicher freigeben nicht vergessen!!
for(row=0; row<numOfRows ;row++){
  delete []matrix[row];
}
delete []matrix;


1st edit: *-chen vergessen, ups
@all: wie sieht das mit Initialisierung auf NULL bei Zeigern aus? Soll, muß oder was?
--
freshman.say("Wer nicht an Wunder glaubt ist kein Realist!\a");
while(1)freshman.ask(sillyQuestion);

Dieser Post wurde am 02.07.2004 um 13:54 Uhr von freshman editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.07.2004, 14:04 Uhr
(un)wissender
Niveauwart


Mit 0 (nicht mit Null, das ist c) initialisieren muss nicht, kann aber helfen Fehler zu vermeiden.
Wenn man abfragen muss, ob ein Pointer gültig ist, dann sollte er im ungültigen Fall mit 0 initialisiert worden sein.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.07.2004, 18:50 Uhr
typecast
aka loddab
(Operator)


@(un)wissender: Es ist egal, ob du auf NULL oder 0 prüfst, ist egal, wegen #define NULL 0
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
02.07.2004, 18:54 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat:
freshman postete
@all: wie sieht das mit Initialisierung auf NULL bei Zeigern aus? Soll, muß oder was?

Man kann. Ich tus. Der Grund ist einfach: ein uninitialisierter Zeiger produziert u.U. schwerer zu findende Fehler als ein mit NULL initialisierter.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
02.07.2004, 18:55 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Man kann. Ich tus. Der Grund ist einfach: ein uninitialisierter Zeiger produziert u.U. schwerer zu findende Fehler als ein mit NULL initialisierter.


seit wann machst du Fehler?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


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: