Не free не будет. Чтобы незаконтачится решил расписать дефайнами... Накосячил, вот так правильно
...
#if ListKolvoBlok>=1
static unsigned short Blok0[ListSizeBlok0];//блок данных
#endif
#if ListKolvoBlok>=2
static unsigned short Blok1[ListSizeBlok1];//блок данных
#endif
#if ListKolvoBlok>=3
static unsigned short Blok2[ListSizeBlok2];//блок данных
#endif
#if ListKolvoBlok>=4
static unsigned short Blok3[ListSizeBlok3];//блок данных
#endif
#if ListKolvoBlok>=5
static unsigned short Blok4[ListSizeBlok4];//блок данных
#endif
#if ListKolvoBlok>=6
static unsigned short Blok5[ListSizeBlok5];//блок данных
#endif
#if ListKolvoBlok>=7
static unsigned short Blok6[ListSizeBlok6];//блок данных
#endif
#if ListKolvoBlok>=8
static unsigned short Blok7[ListSizeBlok7];//блок данных
#endif
#if ListKolvoBlok>8
#error "Добавь блоков!"
#endif
#endif
#endif
#endif
...