new -- это вызов operator new(sizeof(T)) и последующий вызов Т(...)
delete -- вызов ~T() и вызов operator delete(). Для массивов ещё
добавляется пробежка по всем элементам массива и вызов T() или ~T()
для каждого. Обычно функции operator new() и operator delete() --
этот тот же malloc() и free()... Так что в менеджменте памяти
ничего нового. Конечно нельзя вектор без мьютекса использовать
параллельно в разных потоках. Впрочем это касается любого класса
вообще. Любой структуры данных вообще. Т.е. она имеет смысл только целостно, а не когда её параллельно меняют из двух разных мест в коде.