【发布时间】:2012-11-18 18:51:06
【问题描述】:
考虑以下 C++ 源代码
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。 -
如果你想让
szSomething保持活力,为什么要删除它? -
失败的手动内存管理一如既往的失败。
-
您需要使用匈牙利符号吗? joelonsoftware.com/articles/Wrong.html
标签: c++ stl parameters reference std