Neulingsfragen zu malloc und sizeof

Kann mir jemand erklären, warum mein Aufruf von malloc mit einer Stringgröße von 6 eine Größe von 4 Bytes ergibt? Tatsächlich erhalte ich für jedes ganzzahlige Argument, das ich malloc gebe, eine Größe von 4. Als Nächstes versuche ich, zwei Zeichenfolgen zu kopieren. Warum ist meine Ausgabe der kopierten Zeichenfolge (NULL)? Folgendes ist mein Code:

int main()
{
    char * str = "string";
    char * copy = malloc(sizeof(str) + 1);
    printf("bytes allocated for copy: %d\n", sizeof(copy));
    while(*str != '\0'){
        *copy = *str;
        str++;
        copy++;
    }
    copy = '\0';
    printf("%s\n", copy);
}

Antworten auf die Frage(8)

Ihre Antwort auf die Frage