cppcheck认为alloc和dealloc存在不匹配

S.S*_*ker 1 c++ cppcheck

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;
  // ... 
}
Run Code Online (Sandbox Code Playgroud)

πάν*_*ῥεῖ 6

error mismatchAllocDealloc false Mismatching allocation and deallocation: val2
Run Code Online (Sandbox Code Playgroud)

new并且new []必须以一致的方式与使用deletedelete [],这就是为什么cppcheck抱怨.

我该怎么做才能解决这个错误?

delete [] val2;,应该修复它.

顺便说一下,这并没有直接表明内存泄漏,但它很容易变成一个,因为它基本上是未定义的行为.