`New` operator is often confusing for me, and using it can lead to memory leaks if I forget to use `delete`. Every time I have to allocate an array of objects without knowing its length at compile time, I just use `std::vector`. What is the point of using `new`?

Also, why would I need to use `new` operator to allocate space for just one single instance of an object?