Erstellen Sie eine struct auf dem heap?

Habe ich angewiesen worden, schreiben ein Modell strdup durch die Schaffung eines String struct auf dem heap enthält eine Kopie von der Quelle. Ich denke, ich habe erfolgreich kodiert, strdup, aber ich bin mir nicht sicher, ob ich angelegt habe eine Struct auf dem heap...

typedef 
struct String {
    int length;
    int capacity;
    unsigned check;
    char ptr[0];
} String;

char* modelstrdup(char* src){
    int capacity =0, length=0, i = 0 ;
    char *string;
    while ( src[length] != '\0'){
        length++;
    }
    capacity = length;
    string = malloc(sizeof(String) + capacity + 1);
    while ( i < length ){
        string[i] = src[i];
        i++;
    }
    string[i+1] = '\0';

    return string;
}   
Siehe stackoverflow.com/questions/1622416/create-strdup-in-c weitere Informationen zu dieser Frage.
Die Verwendung von strlen() eher als schreiben Sie Ihre eigene Schleife, um die Länge.

InformationsquelleAutor user133466 | 2009-10-26

Schreibe einen Kommentar