这些场景中是否存在内存泄漏?

时间:2017-03-06 23:45:54

标签: c++ memory-leaks

我正在努力调试几个小时后内存不足的大型c ++程序,这些场景是否会造成内存泄漏?

场景1:使用&(不含delete或类似内容):

inline int testFunc(std::vector<int>& peaksArray, int& tmp) {
for (int Index : peaksArray) 
{
tmp++
}
}

场景2:使用char[](没有delete或类似的内容):

char debug[500];    

我从不在我的计划中使用:

  • new
  • 使用*
  • 进行延期
  • delete(也许我应该?)

感谢您的回答,

此致

2 个答案:

答案 0 :(得分:6)

如果您不使用新内容,请不要使用删除功能。局部变量具有其声明范围的默认生命周期。一旦该范围结束,尝试使用该变量将导致未定义的行为。

答案 1 :(得分:1)

似乎你理解它 - 有一个例外:在你的例子中,debug就像其他一切一样是一个堆栈变量。 new或malloc在堆上创建,其他所有(局部变量等)都在堆栈上。主要的局部变量与任何其他函数的变量没有区别。

共享内存是一种相当罕见的情况,你通常不需要它,因此你不会拥有它,除非你明确要求它(否则,一些随机的另一个进程可能会使用你的进程使用的相同内存 - 显然,这会破坏事情。)

有关详细信息,请查看here