cppcheck 认为 alloc 和 dealloc 不匹配
Posted
技术标签:
【中文标题】cppcheck 认为 alloc 和 dealloc 不匹配【英文标题】:cppcheck thinks there is a mismatch in alloc and 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);
,它可能还会说。
【参考方案1】:
error mismatchAllocDealloc false Mismatching allocation and deallocation: val2
new
和new []
需要以与delete
和delete []
一致的方式使用,这就是cppcheck 抱怨的原因。
我应该怎么做才能修复这个错误?
写delete [] val2;
,应该可以解决它。
顺便说一句,这并不直接表示内存泄漏,但它很容易成为一个,因为它基本上是未定义的行为。
【讨论】:
以上是关于cppcheck 认为 alloc 和 dealloc 不匹配的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 stdint.h 的 int64_t 变量(cpcheck 认为它是有符号整数)防止 %"PRIi64" (%lld) 的 cppcheck (v1.72) 警告