I have tested two utlity for check free memory that are on arduino playground. These are availableMemory() and check_mem() and they are at http://www.arduino.cc/playground/Code/AvailableMemory. Running the same code I obtain:
ATMEGA 328 availableMemory() 40 check_mem() 231
ATMEGA 2560 availableMemory() 41 check_mem() 5918
How is it possible that values are so different? availableMemory() give the same value* on mega and uno but the first one has 4 times more memory!
of course on availableMemory() set **int size*, use 2048 with ATmega328, 1024 with ATmega 168, 8192 for mega 2560