Thanks a lot, Malcolm. Let me express it this way: If N good programmers had to write in C a program where vertices and triangles that point to vertices could be created and deleted dynamically at run time, do you think all these N programmers would take the same implementation choice nowadays, or would they choose N different solutions?

I have read a bit about the difference between "structs of arrays" and "arrays of structs" (whose performance depends on how you access your data, obviously), but I'd like to read on recommended practices for updating references when the array they point to grows or shrinks (not only at the end of the array, which wouldn't need updating the references).