initialize a vector in a constructor

PaulS:

For every line you must type, there is a change you will mistype it or forget to do it. Thus, since you must declare the pointer, allocate memory from it, and free the memory

Oh, I know. I just hate when I have to think and code at the same time.

as opposed to just defining the object, you have the opportunity to make more errors with pointers.

Better to let someone else do the thinking, eh?

I'm not saying it's hard, just it increases the probability of errors. People seem to have figured this out, since they invented smartptr and similar constructs so one doesn't need to worry about it.

(I guess that's technically optional on a uC)

Uh, no, freeing memory is not optional on a uC.

For a global object, you want it to last until the memory is forcefully cleared by a reset. This thread is about allocating and forgetting about it. Obviously you need to free memory if you're going to be repeatedly allocating it.