вопросы новичка о malloc и sizeof

Может кто-нибудь объяснить мне, почему мой вызов malloc с размером строки 6 возвращает размер 4 байта? Фактически, любой целочисленный аргумент, который я даю malloc, получает размер 4. Затем я пытаюсь скопировать две строки. Почему мой вывод скопированной строки (NULL)? Ниже приведен мой код:

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);
}

Ответы на вопрос(8)

Ваш ответ на вопрос