K & R:
union header
{
struct
{
union header *ptr;
unsigned size;
} s;
Align x;
};
, :
union header_t
{
struct
{
union header_t *next;
unsigned size;
} s;
};
(, struct,
struct union header_t *,
.)
K & R malloc() ,
, . malloc ,
, ,
.
, :
typedef union header Header;
static Header base;
Header *p = &base;
...
p += p->s.size;
return (void *)(p+1);
, p+1 (cast to void *), , . p Header *, , sizeof(Header) , (, p+1 sizeof(Header) bytes from p). , Header .
struct Header . , Header , union, , , , .. . K & R , long. , , Header Align. , Align - , , .
, " " , C , malloc, , . , long Align.