pYro_65:
Not sure if this will even work ( didn't upload ), but this fills every single byte free on the mega
It also exposes a strange compiler or linker bug. Try this...
#define nothing
template< uint64_t C, typename T >
struct LargeStruct{
T Data;
LargeStruct< C - 1, T > Next;
};
template< typename T > struct LargeStruct< 0, T >{ };
typedef LargeStruct< 80, uint64_t > Container; //640 bytes
PROGMEM LargeStruct< 50, Container > l_Struct; //32k
PROGMEM LargeStruct< 50, Container > l_Struct1; //32k
PROGMEM LargeStruct< 50, Container > l_Struct2; //32k
PROGMEM LargeStruct< 50, Container > l_Struct3; //32k
PROGMEM LargeStruct< 50, Container > l_Struct4; //32k
PROGMEM LargeStruct< 50, Container > l_Struct5; //32k
PROGMEM LargeStruct< 50, Container > l_Struct6; //32k
PROGMEM LargeStruct< 50, Container > l_Struct7; //32k
PROGMEM LargeStruct< 431, uint16_t > l_Struct8; //862 bytes
void setup()
{
volatile int i = ( int ) &l_Struct;
/*
**********************************************************************
volatile int i1 = ( int ) &l_Struct1;
volatile int i2 = ( int ) &l_Struct2;
volatile int i3 = ( int ) &l_Struct3;
volatile int i4 = ( int ) &l_Struct4;
volatile int i5 = ( int ) &l_Struct5;
volatile int i6 = ( int ) &l_Struct6;
volatile int i7 = ( int ) &l_Struct7;
volatile int i8 = ( int ) &l_Struct8;
**********************************************************************
*/
}
void loop(){}