A library for allocating complex C datastructures