I'm wondering if the 'header' is hidden from the caller? Ie. in the same way that the memory returned by malloc() at address X probably starts at X-N where N is the size of the 'header' containing information for use by the system. In which case the appropriate code (which I'm assuming should be C) might be:
But I'm guessing.