我的代碼示例如下圖所示..插入字符*新入載體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 *來實現這一點。
Depositphotos你的載像是空的。循環不應該運行。 – juanchopanza
爲什麼要首先解決這個問題? 'std :: vector'會做得很好。 –
在你的例子中,你在哪裏調用'CollectName'? – PiotrNycz