Michael S. Tsirkin wrote: > That's version 1 of my patch. Version 2 removed even need for macro > completely by moving allocations to the caller.
The downside of moving allocations are: (1) it's one more call in the caller, to allocate the type, (2) it needs a virtual destructor for each type to free the object, which can clutter the code if there is no other reason for virtual destructors. I don't think those are necessarily bad, but they can remove from the neatness of existing code. Personally I favour an occasional macro using sizeof/offsetof/container_of if the result is a natural and sensible API to all of its callers. -- Jamie