I'm probably missing something, but why would you use this over a linked list or a null-terminated array of pointers to structs, or some other method? Is the point the ability to pass an array of arbitrary structs to your API and have it know how to serialize that array in a way specific to the struct?