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.
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ßbroteDieser Post wurde am 30.06.2004 um 15:08 Uhr von Windalf editiert.
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.