I've never used an XMega so i dunno how it structures the memory and the eeprom.
But a pointer always points to a single memory location be it 8bit, 16bit, 32bit etc.. depending on the hardware
Ok, so the XMEGA A is capable of using 32 bit pointers, since this can access all my megabytes of external SDRAM:
uint32_t my_own_pointer= 0x00010000; // > 0xFFFF, and thus > 16 bit :-)
uint8_t value = 5;
*(uint8_t *)my_own_pointer = value;
Great this works, but then there is the point mentioned by mojo-chan.
In AVR-GCC all pointers are 16 bit by default
Yes I found out. How difficult can it be? There was a statement from AVR that 16 bit pointers will not be supported till GCC 4.7. Now I am already using 4.8.2 and still it uses 16 bit pointers.
I couldn't find the source indeed, or else I would have changed the uint16_t into uint32_t. (Or am I missing something complex here?)
So I should write my own allocate() bla bla bla? I am usin three arrays to divide my SDRAM in sectors. Structures can then access the arrays to find a free sector. The speed of my software is going down a lot this way! And also my flash memory and valuable real life time. Moreover, I am not using my RAM efficiently with free memory in every sector.
How do I solve the speed and efficiency issues? It must be possible, since the custom '32 bit pointer' works.
Edit: Here is an old version of the AVR-LIBC with a malloc.c I could addapt
http://download.savannah.gnu.org/releases/avr-libc/However, if I use my custom pointer in an existing function it converts it to 16 bit.