Uso da sintaxe de inicialização struct para struct on-heap

Eu tenho essa estrutura simples que quero inicializar no heap e retornar como um ponteiro em uma função.

struct entry {
    const char* const key; // We don't want the key modified in any way
    const void* data;      // But the pointer to data can change
    struct entry* next;
};

Há um problema, não possocalloc e inicialize os membros um por um, porquekey é um ponteiro const. Eu encontrei em algum lugar essa sintaxe que funciona:

struct entry* entry = calloc(1, sizeof(struct entry));
*entry = (struct entry) { .key = key, .data = data, .next = NULL };

Mas não sei o que está acontecendo: cria uma estrutura "anônima" que é copiada para o local onde*entry vidas? É seguro usar ou devo preferir criar uma estrutura local que é copiada commemcpy para o local certo?

questionAnswers(2)

yourAnswerToTheQuestion