agreed on this one, but in general i'm not sure why we use new/delete here.
From a first glance a vector should do, but the code is not very clean. We'd have to take care of constness, since we do not want a C pointer to become invalid if the vector re-allocates, but that should not be a big deal... again.. just looked briefly at this