E' a tema didattico perciò preferirei non mi diceste che c'è la possibilità di farlo in maniera Y.

Sto cercando di scorrere *prova e copiare il valore di *prova ogni ciclo in tmp aggiungendo ogni lettera letta.

codice:
void explode(char **str) {
    int  i = 0;
    char *prova = "-1,-1,2,3";
    char *tmp = NULL;

    for (; i < strlen(prova); i++) {
        if (tmp != NULL) {
            tmp = realloc(tmp, (strlen(tmp)+1) * sizeof(char));
        } else {
            tmp = malloc(1 * sizeof(char));
        }
        
        tmp[i] = *(prova+i);
        
        printf("\nsize: %ld\n", strlen(tmp));
        printf("\ntmp: %s\n", tmp);
    }
    
    free(tmp);
}
Perchè se sostituisco realloc(tmp, (strlen(tmp)+1) * sizeof(char)) con realloc(tmp, 1 * sizeof(char)) funziona comunque?