考虑下面的源代码,C++的std ::矢量::引用的push_back参数
vector <char *> myFunction()
{
vector <char *> vRetVal;
char *szSomething = new char[7];
strcpy(szSomething,"Hello!");
vRetVal.push_back(szSomething); // here vRetVal[0] address == &szSomething
delete[] szSomething; // delete[]ing szSomething will "corrupt" vRetVal[0]
szSomething = NULL;
return vRetVal; // here i return a "corrupted" vRetVal
}
如何使用的push_back,使我传递参数的副本,而不是引用服用任何想法?任何其他想法也被接受和赞赏。
使用'std :: string'。 – GManNickG
如果你想保留它'szSomething',为什么要删除它? – Mat
失败手动内存管理失败,一如既往。 – Puppy