In RAM, the 16-bit pointers limit access to 64K bytes.
In Flash, the 16-bit pointers limit access to 128K ( 64K words ).
However there are pointer extension registers ( RAMPZ ) that easily let you break these barriers.
WinAVR GNU-C/C++:
Make yourself familiar with the -mrelax compiler (linker) option, which is necessary to compile and link projects with > 128 Kbytes Flash.
Read-only data arrays stored in Flash memory are limited to < 32 Kbytes size. Explanations:
sizeof(int) = 2.
The requirement that array indices are signed by definition (so expressions like “pointer[-1]” can work).
The restriction that GCC wants to potentially allow byte access to all arrays/pointers.
CodeVisionAVR:
The commercial HP Infotech "CodeVisionAVR Compiler" supports Flash access for memory of 256kb flash and greater, with its Medium and Large memory models.