C - dynamic memory allocation mit Doppel-pointer

Ich bin die Zuweisung von Speicher in einer Funktion namens myalloc() und mit und befreien es in main().
Ich bin mit Doppel-pointer, um dies zu tun, hier ist der code, der funktioniert gut,

//Example # 1

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void myalloc( char ** ptr)
{
    *ptr = malloc(255);
    strcpy( *ptr, "Hello World");
}

int main()
{
    char *ptr = 0;
    myalloc( &ptr );
    printf("String is %s\n", ptr);
    free(ptr);

    return 0;
}

Aber folgender code funktioniert nicht und gibt einen segmentation fault.
Ich denke, das ist eine andere Art der Verwendung von double-Zeigern.

//Example # 2

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void myalloc( char ** ptr)
{
    *ptr = malloc(255);
    strcpy( *ptr, "Hello World");
}

int main()
{
    char **ptr = 0;
    myalloc( ptr );
    printf("String is %s\n", *ptr);
    free(*ptr);

    return 0;
}

Bitte erläutern Sie mir, warum es ist mir seg Fehler im zweiten Beispiel.

Hinweis: Language = C, Compiler = GCC 4.5.1, OS = Fedora Core 14

Weiß ich auch, dass es einige Frage schon gefragt worden, bezogen auf Speicherreservierung mithilfe von double-Zeigern, aber Sie kümmern sich nicht um dieses Problem, also bitte nicht zu Kennzeichnen, als sich wiederholende Frage.

Was ist foo? Es soll myalloc?
In beiden Beispiel, die ich vergaß zu ersetzen foo() mit myalloc().. ich entschuldige mich..

InformationsquelleAutor mannan | 2011-06-09

Schreibe einen Kommentar