【问题标题】:cppcheck thinks there is a mismatch in alloc and dealloccppcheck 认为 alloc 和 dealloc 不匹配
【发布时间】:2015-09-04 09:41:40
【问题描述】:

cpp-check 错误是:error mismatchAllocDealloc false Mismatching allocation and deallocation: val2

我应该怎么做才能修复这个错误?

void MainWindow::ParseDemo(char *pBuf)
{
  char* val2 = new char[256];
  for (int i = 0; i < 254; i++)
  {
     val2[i] = pBuf[i+305];
  }
  val2[254] = 0; // 0-Termination
  QString sunit(val2);
  DoStuff(sunit);
  delete val2;
  // ... 
}

【问题讨论】:

  • 不是说有泄漏,而是说有不匹配。如果你写了free(val2);,它可能还会说。

标签: c++ cppcheck


【解决方案1】:
error mismatchAllocDealloc false Mismatching allocation and deallocation: val2

newnew [] 需要以与deletedelete [] 一致的方式使用,这就是cppcheck 抱怨的原因。

我应该怎么做才能修复这个错误?

delete [] val2;,应该可以解决它。

顺便说一句,这并不直接表示内存泄漏,但它很容易成为一个,因为它基本上是未定义的行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-30
    • 2011-11-27
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多