Oi, mais uma dúvida. Se data é um array, não seria um void **? A struct no momento está como void *data. Obrigado!
typedefstruct buffer_s {
void *data;
size_t buffer_size; // Number of members in data array.
size_t member_size; // Size of one member.
size_t p; // First free position in data.
} Buffer;