У меня есть пример кода, как показано ниже ..Вставить символ * с новым в вектор C++
std::vector<char*> vNameList;//it will be defined globally..
int main(int argc, char* argv[])
{
CollectName();
for(int i = 0; i<(int)vNameList.size(); i++)
{
printf("\n %s" , vNameList[i]);//Here gabage values are getting printed on console
}
return 0;
}
void CollectName()
{
char *Name = new char[sizeof(NAME)+1];//NAME datatype is defined having size of 32 char
//processing for Name is performed , which includes assigning Name variable with value..
//now insert it into vector
vNameList.push_back(Name);
delete[] Name; //at this Name value inserted into vector become garbage
}
Я считаю, если мы инициализируем символ * с новым он должен быть удален, чтобы избежать утечек памяти. Но это приводит к изменению значений из вектора.
Пожалуйста, направляйте меня так, чтобы я мог исправить свой код, который даст мне правильные значения.
У меня есть ограничение на использование только Char *, поэтому предложите способ достичь этого с помощью char *.
Ваш вектор пуст. Цикл не должен запускаться. – juanchopanza
Зачем беспокоиться об этом в первую очередь? 'std :: vector' будет делать все отлично. –
Где вы называете 'CollectName' в вашем примере? – PiotrNycz