我对这个问题有一个额外的疑问。
回答者说第一个错误
des = new char[src.size() + 1];
这段代码会导致内存泄露,因为des是一个局部变量,所以他建议在这之后使用另一种方法。
char* toNormalWord(const std::string& src)
{
char* des = new char[src.size() + 1];
// stuff
return des;
}
但是我不明白为什么局部变量会导致内存泄漏,以及第一个和第二个有什么区别。
难道第二个函数中也不是使用des
作为局部变量吗?
我原本以为两者之间的区别就在于函数是否接收des
为参数或自行创建。
我想我是缺少了一些重要的知识,但我不知道具体是什么。
delete []
释放内存?如果代码中缺少使用delete []
,就会导致内存泄漏。采纳链接中的答案建议--使用std::string
。 - PaulMcKenzie