ho risolto!!
avevo dimenticato di allocare lo spazio per le stringhe all'interno del vettore (allocavo solo lo spazio per il puntatore).
comunque ho aggiunto questa riga
codice:
v[index] = (char*)calloc(strlen(sTemp),sizeof(char));
quindi la funzione completa è questa
codice:
char** scompatta(char *buffer,char *delimiters) {
    char *sTemp;
    char *sBuffer;
    int index = 0;
    char **v;

    sBuffer = strdup(buffer);
         
    //utilizzo la funzione strtok che restituisce la stringa fino al delimitatore
    sTemp = (char*)strtok(sBuffer,delimiters);
    v = (char**)malloc(sizeof(char*));
    v[index] = (char*)calloc(strlen(sTemp),sizeof(char));
    strcpy(v[index],sTemp);
    index++;

    //passo a strtok NULL come primo parametro così parsa la stringa che ha in "memoria"
    while((sTemp = (char*)strtok(NULL,delimiters)) != NULL) {
        v = (char**)realloc(v,(index+1)*sizeof(char*));
        v[index] = (char*)calloc(strlen(sTemp),sizeof(char));
        strcpy(v[index],sTemp);
	    index++;
    }
    
    v = (char**)realloc(v,(index+1)*sizeof(char*));
    v[index] = NULL;
    
    free(sBuffer);

    return v;
}
ho anche aggiunto una funzione per liberare lo spazio usato dal vettore perchè altrimenti rimarrebbe allocato in memoria
codice:
void freeVett(char** v) {
    int k;
    
    for(k=0;v[k]!=NULL;k++)
        free(v[k]);
    
    free(v);
}
questa funzione deve essere richiamata quando il vettore non serve più (e prima della fine del programma )