【发布时间】:2019-08-12 22:56:13
【问题描述】:
c++ <error: Cannot access memory at address 0x1> 关于这个问题,我还有一个问题。 回答者说第一个
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。
标签: c++ dynamic memory-leaks