データ空間
Data space is the only logical area of the dictionary for which standard words are provided to allocate and access regions of memory. These regions are: contiguous regions, variables, text-literal regions, input buffers, and other transient regions, each of which is described in the following sections. A program may read from or write into these regions unless otherwise specified.
アドレス・アラインメント
Most address are cell aligned (indicated by a-addr) or character aligned (c-addr). ALIGNED, CHAR+, and arithmetic operations can alter the alignment state of an address on the stack. CHAR+ applied to an aligned address returns a character-aligned address that can only be used to access characters. Applying CHAR+ to a character-aligned address produces the succeeding character-aligned address. Adding or subtracting an arbitrary number to an address can produce an unaligned address that shall not be used to fetch or store anything. The only way to find the next aligned address is with ALIGNED. An ambiguous condition exists when memory is accessed using an address that is not aligned according to thje requirements for the accessed type.
The definitions of CREATE and VARIABLE require that the definitions created by them return aligned address.
After definitions are compiled or the word ALIGN is executed the data-space pointer is guaranteed to be aligned.
隣接リージョン
ALLOT, ,(comma), C, (c-comma), ALIGN を用いてアロケートされたデータ空間のリージョンは、後述する制約がかかっていないならば、これらのワードでアロケートされた、最後のリージョンと隣接した形になることが保証されている。データ空間ポインタである HERE は、いつも次にアロケートされるデータ空間リージョンの先頭を指している。アロケーションが連続して行われると、データ空間ポインタは増加する。プログラムは隣接したアロケート済みリージョンに対してアドレス演算を行う。上記のオペレータを用いてアロケートされた最後のデータ空間リージョンは、ALLOT を用いて同じサイズで逆方向にアロケートすることによって開放される (後述する制約に従う)。CREATE は隣接したデータ空間リージョンの先頭を更新し、その先頭アドレスは CREATE によって定義されたものから返される。このリージョンはさらなる定義をコンパイルすることによって失効する。
処理系はコードによる使用を目的としてデータ空間を自由にアロケートすることができるので、もし2回のアロケーションの間で辞書に定義が追加されたり逆に削除されたりする場合は、上記のオペレータは隣接したデータ空間リージョンを生成する必要はない。割り当て解除されたメモリが定義を含んでいる場合、曖昧な状態になる。