11.3.3 Size Limitations of Program Memory Variables

Arrays of any type (including arrays of aggregate types) can be qualified const and placed in the program memory. So too can structure and union aggregate types, see section 9.5 Structures and Unions. These objects can often become large in size and may affect memory allocation.

For objects allocated in a compiler-managed PSV window (auto_psv space) the total memory available for allocation is limited by the size of the PSV window itself. Thus, no single object can be larger than the size of the PSV window and all such objects must not total larger than this window.

The variables allocated to program memory are subject to similar constraints as data space objects in terms of maximum size, but they are allocated to the larger program space rather than data space memory. The 11.2.2 Non-Auto Variable Allocation and Access section, describes defining and using large arrays is also applicable to objects in program space memory.