true head and heap alloc