In C - eine Programmiersprache, die von Dennis Ritchie bei AT & T Bell Laboratories in den frühen 1970er Jahren entwickelt - die malloc -Funktion ist ein Mittel der Zuweisung von Speicher dynamisch , oder als Reaktion auf die Nachfrage , anstatt in absoluten Zahlen . Manchmal Programmierer nicht wissen, wie viel Speicher für Daten auf der Zeit, die sie das Schreiben eines Programms benötigt werden , so können sie in den Speicher malloc dynamisch zuzuweisen , nachdem das Programm angefangen hat zu laufen . Memory Allocation
Standardmäßig weist die Funktion malloc einen zusammenhängenden oder benachbarten Block des Speichers auf einer Fläche wie einem Haufen , die durch ein Programm , um Daten zu speichern und Variablen zugegriffen werden kann bekannt. Die malloc -Funktion nimmt ein einzelnes Argument , eine lange oder 32 -Bit-Integer , der die Anzahl von Bytes repräsentiert vom Heap . Die Funktion malloc fragt das System einen Speicherblock der Größe und gibt einen Zeiger - eine Adresse , aus der Sicht der Programmiersprache - . Auf das erste Element des Blocks
Return Value
Computer nur eine endliche Menge an Speicher , so ist es möglich, dass die Funktion malloc mehr Speicher verlangen, als physisch verfügbar und verursachen ein Programm zum Absturz zu bringen . Wenn nicht genügend Speicher zur Verfügung steht , gibt malloc einen Null-Zeiger , oder einen Zeiger mit einem Wert von Null. Um ein Programm zum Absturz zu verhindern, müssen Programmierer explizit testen, ob malloc nicht null zurückgegeben , so dass sie wissen , dass der angeforderte Speicher erfolgreich , bevor Sie es verwenden will .
Freigeben von Arbeitsspeicher
Ebenso kann ein Computer nicht ständig dafür mehr und mehr Speicher - und immer wieder überschrieben einen Zeiger , der auf dynamisch zugewiesenen Speicher kann Daten unzugänglich werden führen . Dynamisch zugewiesene Speicher muss daher zurück in den Systemspeicher Pool freigegeben werden , mit der kostenlosen Funktion , sobald es nicht mehr benötigt wird . Sobald ein Prozess beendet , alle dynamisch zugewiesenen Speicher zurück zu dem Speicher-Pool freigegeben.
Syntax
Malloc gibt einen allgemeinen Zeiger oder ein Zeiger auf void , aber der Zeiger kann eingegeben werden, oder typecast , um die Art der Daten, auf die sie verweist anzuzeigen. Die Syntax " char * str = (char *) malloc ( 40) ," zum Beispiel , ordnet Speicher für eine Zeichenfolge 40 Zeichen lang sein. Alternativ können Programmierer einen Zeiger deklarieren und aufrufen malloc , wenn sie Platz für die Elemente in einem Array machen wollen. Allerdings ist es wichtig zu beachten, dass die Funktion nur malloc reserviert Speicher . Es ist nicht leer oder sonst initialisieren Sie den Speicher es ordnet .