On many processors cells have to be aligned in memory, if you want to
access them with
! (and even if the processor does
not require alignment, access to aligned cells is faster).
here (i.e., the place where the next
allocation will occur, and that the
created word points to).
Likewise, the memory produced by
allocate starts at an aligned
address. Adding a number of
cells to an aligned address produces
another aligned address.
However, address arithmetic involving
create an address that is not cell-aligned.
Aligned ( addr --
a-addr ) produces the next aligned address:
v3 char+ aligned .s @ . v3 char+ .s @ .
here to the next aligned
create v5 97 c, here . align here . 1000 ,
Note that you should use aligned addresses even if your processor does not require them, if you want your program to be portable.
Reference: Address arithmetic.