Visual studio 2010 删除空指针的覆盖率问题

Visual studio 2010 删除空指针的覆盖率问题,visual-studio-2010,visual-c++,coverity,Visual Studio 2010,Visual C++,Coverity,Coverity指出了一个关于删除空指针的错误。代码如下: void *pbits=(void *)new char[((bmp.bmWidth*bitspixel+31)/32)*bmp.bmHeight*4]; result=GetDIBits(pDC->GetSafeHdc(),HBITMAP(*pbitmap),0,bmp.bmHeight,pbits,bitmapinfo,DIB_RGB_COLORS); char curdir[100]; if(!GetCurrentDire

Coverity指出了一个关于删除空指针的错误。代码如下:

void *pbits=(void *)new char[((bmp.bmWidth*bitspixel+31)/32)*bmp.bmHeight*4];
result=GetDIBits(pDC->GetSafeHdc(),HBITMAP(*pbitmap),0,bmp.bmHeight,pbits,bitmapinfo,DIB_RGB_COLORS);

char curdir[100];
if(!GetCurrentDirectory(100,curdir))
{
    delete [] pbits;    
    return;
}
你能帮我解决什么不正确的问题吗

非常感谢

致意


Chintan

只需将char*用于PBIT的类型。

A
delete
上的
void*
实际上是未定义的;这就是该工具报告某些内容的原因。只要在将其传递给
GetDIBits
时抛出
pbits
,您就可以解决您的问题。

不确定我们为什么要猜测它生成的警告。很有可能你在一个空*上使用delete[]会不太开心。所以不要使用void*,char*也可以使用。@HansPassant谢谢Hans,干杯