I define a struct array struct smp { unsigned char attri; unsigned char data; } smp[50]; but I find the compiler make a gap between the array. In fact the ram is assigned as smp[0].attri smp[0].data gap[0] gap[1] smp[1].attri smp[1].data gap[0] gap[1] ... so the ram of gap can not be used, then half of the ram is wasted. how can I make the ram of gap to be useful? Can the ram be assign continuous as define a struct array? Can the ram be complied as smp[0].attri smp[0].data smp[1].attri smp[1].data smp[2].attri smp[2].data ... ?