Speicherallozierung in C
Der c Compiler hat eine Speicherallozierungbibliothek, definiert im malloc.h. Gedächtnis ist mit der malloc Funktion reserviert und bringt einen Zeiger zur Adresse zurück. Sie nimmt einen Parameter, die Größe des Gedächtnisses erfordert in den Bytes.
Das folgende Beispiel teilt Raum für die Zeichenkette zu,"hello world".
ptr = (char *)malloc(strlen("Hello world") + 1);
Das Extra Byte wird angefordert, um den Zeichenketteendpunktbuchstaben, „\ 0“ in Betracht zu ziehen. (Putzfrau *) wird eine Form benannt und die Rückholart zwingt, um Putzfrau zu sein *.
Da Datenarten unterschiedliche Größen haben, und malloc den Raum in den Bytes zurückbringt, ist es gutes üblich, damit Beweglichkeitgründe den sizeof Operator verwenden, wenn es eine Größe spezifiziert, um zuzuteilen.
Das folgende Beispiel liest eine Zeichenkette in den Buchstabe Reihe Puffer und teilt dann die genaue Menge des Gedächtnisses erfordert und der Kopien es zu einem variablen benannten „PTR“ zu.
#include <string.h>
#include <malloc.h>
int main()
{
char *ptr, buffer[80];
printf("Enter a string: ");
gets(buffer);
ptr = (char *)malloc((strlen(buffer) + 1) *
sizeof(char));
strcpy(ptr, buffer);
printf("You entered: %s\n", ptr);
return 0;
}
Der Ausgang des Programms ist, wie folgt:
Enter a string: India is the best
You entered: India is the best |
|