Вы не можете delete[]
ничего нажимать на vector
до тех пор, пока с ним не закончится связанный элемент vector
.
Мне не ясно, какова цель этого кода - вы в любом случае удаляете только последнее использованное значение shortSitetext
, так что это не делает то, что вы думаете (что пытается избежать утечки памятисопоставляя new
с delete
, я думаю).
Удалите последнюю строку кода и вручную очистите vector
, когда закончите с ним, перебирая элементы, вызывающие delete[]
для каждого, затем clear()
vector
.
Или используйте boost::ptr_vector
, который сделает это автоматически.
Или используйте vector<string>
, чтобы отделить устаревший код char*
от вашего современного не необработанного указателя с использованием мира C ++.Вы можете нажать const char*
прямо на vector<string>
следующим образом:
const char* str;
// init str to the value you wish
vector<string> vec;
vec.push_back(str);