const array in FLASH?

Does the compiler put 'const' things automatically into the FLASH memory?

static const DELAY_TABLE PROGMEM table[] =
{
  //  baud    rxcenter    rxintra    rxstop  tx
  { 115200,   3,          21,        21,     18,     },
 ........
  { 300,      4759,       9523,      9523,   9520,   },
};

A techie answer would be along the lines of "const is an access qualifier whereas PROGMEM is a storage modifier". The const keyword will simply tell the compiler that the data is read-only whereas the presence, absence of PROGMEM determines where it is stored. It gets confusing however because of the Harward architecture where RAM and flash have separate address spaces.

The AVR compiler will keep anything declared as const in RAM, but initialize it from copies in Flash when the reference gets into context. That is - const data will consume storage space both in RAM and flash. PROGMEM on the other hand will place data in flash only, but it also leaves the programmer with the task of writing code to move it from flash to RAM as and when needed.