В примере нет утечек, поскольку указанный вами указатель не ссылается на динамическую память.
Но это также плохо написанный код: строковые литералы являются константными, но C ++ позволяет ссылаться на них как на символ *сохранить обратную совместимость библиотеки CЕсли вы намереваетесь ссылаться на строковые литералы, вам лучше использовать const char*
вместо char*
(в случае попытки их изменения вы получите ошибку компилятора, а не исключение времени выполнения)
Еще одна плохая вещьздесь, в том, что в более обширном коде вы рано или поздно теряете контроль над тем, что char * эффективно хранится в векторе: всегда ли они предоставляются как строковые литералы, или они также могут быть каким-то другим образом распределены динамическим символом [] ??И кто несет ответственность за их распределение / освобождение?
std :: vector ничего не говорит об этом, и если вы находитесь в позиции, вы не можете дать четкий ответ на поставленные выше вопросы (каждый упомянутый const char*
буфер может существовать вне области существования вектора или нет), вам, вероятно, лучше использовать std::vector<std::string>
и рассматривать строки как «значения» (не относящиеся к объектам), позволяя строковому классу выполнять грязную работу.