Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » free() bzw farfree()

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
30.06.2004, 14:50 Uhr
~Dave
Gast


was genau macht das command free() bzw farfree() eigentlich?
bzw warum oder wann sollte ich es benutzen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.06.2004, 14:54 Uhr
freshman



void free (void * ptr) gibt den Speicher frei, auf dessen Anfang ptr (Rw zB von malloc() zeigt
farfree() kenn ich nicht
--
freshman.say("Wer nicht an Wunder glaubt ist kein Realist!\a");
while(1)freshman.ask(sillyQuestion);

Dieser Post wurde am 30.06.2004 um 14:55 Uhr von freshman editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.06.2004, 15:02 Uhr
~Dave
Gast


d.h. zb
char test[100];
strcpy(test,"Hallo");
free(test);
gibt test[0] wieder frei oder wie ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
30.06.2004, 15:08 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


nein mit free nur dynamisch (auf dem heap) allokierten speicher wieder freigeben
dein char test[100] wird auf den stack gepackt, der wird von selber wieder geräumt...


C++:
char *test=(char*)malloc(100*sizeof(char)); //sizeof(char) ist immer eins und in diesem falle überflüssig aber wenn du mal einen anderen datentyp nimmst das sizof nicht verwenden... der cast nach char* ist in c auch überflüssig aber solltest du malloc mal in c++ verwenden (was man eigentlich nicht macht da gibt es new) will der compiler den cast haben
strcpy(test,"Hallo");
free(test);
gibt test[0] wieder frei oder wie ?  //nein test[0] ist kein zeiger auf eine array sonden das erste zeichen des arrays mit free wird der vorher mit mallocallokierte speicher der grösse 100 auf den der zeiger test zeigt wieder freigegeben...


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 30.06.2004 um 15:08 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
30.06.2004, 15:11 Uhr
KaraHead



@Dave:
nicht ganz, test ist ein array und muss nicht freigegeben werden.

Aber sachen wie:

C++:

int main()
{
char* test= (char*) malloc(10*sizeof( char ) ) ;
//todo

free(test);
}



Die erste Anweiung reserviert für test einen Speicher auf dem HEAP für 10 char Elemente. Und free(test) gibt den Speicher wieder frei damit er wiederverwendet werden kann.

EDIT
----
Besser Spät als nie

Dieser Post wurde am 30.06.2004 um 15:13 Uhr von KaraHead editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
30.06.2004, 18:12 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

Dieser Post wurde am 30.06.2004 um 18:15 Uhr von 0xdeadbeef editiert.
 
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: