clear the contents of dynamic arrays inside the structure from a function in C : This is the sample version of my project and it throws run-time error because I could not clear the contents and already allocated dynamic memory of data array in the bipartition_fn() function. 
Can someone please help me with clearing the contents of data array in bipartition data structure after every recursion of bipartition_fn() in the loop inside kdtree_fn()



    #include <stdio.h>
    #include <stdlib.h>

    typedef struct{
        int **data;
    }kdtree;

    typedef struct{
        int *data;
    }bipartition;

    void kdtree_fn(int *data, bipartition bp);
    bipartition bipartition_fn(int *data);

    int main(){
    int i;
    int *data;
    data = malloc(4*sizeof(int));
    for(i=0; i<4;i++)
        data[i] = i;
    bipartition bp;
    kdtree kd;
    kdtree_fn(data,bp);

    }
    void kdtree_fn(int *data, bipartition bp){
    kdtree k1;
    k1.data = malloc(5*4*sizeof(int));
    int i,j;
    for(j=0; j<5; j++){
    bp = bipartition_fn(data);
    for( i=0; i<4; i++){
        k1.data[j][i] = bp.data[i];
        printf("%d ",k1.data[j][i]);
    }
    printf("\n");
    }
    return k1;
    }
    bipartition bipartition_fn(int *data){
    bipartition bp1;
    int i;
    bp1.data = malloc(4*sizeof(int));
    for(i=0; i<4; i++){
        bp1.data[i] = data[i] +1;
    }
    return bp1;
    }
