>>29
 Create *Data;
 Data = (Create *)malloc(sizeof(Create));
 for(i=0;;i++){
  Data[i].id = ID;
  ID++;
  glob_DB[i] = Data[i];
  free(Data);
 }

これが変だという事が理解できないと、どこから説明したらいいのかなと思う。
動的に確保するのではなく、固定で大きな配列を用意し、
動くプログラムを書く位の力はあるかい?