I was reading about a Z-machine[*] implementation, where 17-bit addresses were needed, and they were shifted to fit into 16 bits and stored in a two-byte word. This seems quite efficient, certainly a good use of space, and gives access to a 128k sized data area, with the only limitations being that each data item has to start on an even byte, and you can only have 64k items at most.
We can of course extend the idea - common SRAMs connected to our 6502-like systems go up to 512k although of course you can use several chips to make up an even larger memory. At the limit, using only 16 significant bits in a 24 bit pointer looks like quite a coarse-grained data store with fairly low capacity, but this seems practical to me up to say 512k.
Any thoughts? Has anyone tried it?
This is the article I was reading - it's one of a series.
Edit: I see now that SRAMs larger than 512k are also available and not too expensive.
[*] virtual machine for a text adventure game interpreter