C++ cppcheck认为alloc和dealloc不匹配
cpp检查错误为:C++ cppcheck认为alloc和dealloc不匹配,c++,cppcheck,C++,Cppcheck,cpp检查错误为:错误不匹配hallocdealloc错误不匹配分配和解除分配: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(
错误不匹配hallocdealloc错误不匹配分配和解除分配: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;
// ...
}
void主窗口::ParseDemo(char*pBuf)
{
char*val2=新字符[256];
对于(int i=0;i<254;i++)
{
val2[i]=pBuf[i+305];
}
val2[254]=0;//0-终止
QString sunit(val2);
多斯塔夫(苏尼特);
删除val2;
// ...
}
new
和new[]
需要以与delete
和delete[]
一致的方式使用,这就是cppcheck投诉的原因
我应该做什么来修复此错误
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;
// ...
}
写入delete[]val2代码>,应该可以修复它
顺便说一句,这并不是直接表示内存泄漏,但它很容易变成内存泄漏,因为它基本上是未定义的行为。它并不是说存在泄漏,而是说存在不匹配。它可能还会说,如果你写了free(val2)代码>。