cppcheck 认为 alloc 和 dealloc 不匹配
cppcheck thinks there is a mismatch in alloc and dealloc
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;
// ...
}
error mismatchAllocDealloc false Mismatching allocation and deallocation: val2
new
和 new []
需要以与 delete
和 delete []
一致的方式使用,这就是 cppcheck 抱怨的原因。
What should I do to fix this error?
写 delete [] val2;
,应该可以解决问题。
顺便说一句,这并不是直接表示内存泄漏,但它很容易变成内存泄漏,因为它基本上是未定义的行为。
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;
// ...
}
error mismatchAllocDealloc false Mismatching allocation and deallocation: val2
new
和 new []
需要以与 delete
和 delete []
一致的方式使用,这就是 cppcheck 抱怨的原因。
What should I do to fix this error?
写 delete [] val2;
,应该可以解决问题。
顺便说一句,这并不是直接表示内存泄漏,但它很容易变成内存泄漏,因为它基本上是未定义的行为。