Thanks, that's interesting. I would probably add some kind of callback to free individual elements if I ended up using this. A lot of the boilerplate when managing resizable arrays in C ends up being making sure you properly dispose of elements. Or at least it was for me when I last did this.
Absolutely, but that's something I feel that could be implemented on top of these macros if necessary.
Currently I'm using this code just for a string buffers and other arrays where the individual elements are stored in-place in the array.