2013-07-11 62 views
0

Coverity指出了一個關於刪除void指針的錯誤。代碼如下:刪除void指針的覆蓋問題

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

+1

不知道爲什麼我們必須猜測它產生的警告。很高的可能性,你在void *上使用delete []並不太高興。所以只是不要使用void *,char *也可以很好地工作。 –

+0

@HansPassant謝謝Hans,Cheers –

回答

1

只需使用的char *爲pbits的類型。

+0

Thanks Manuell,Cheers –

0

A deletevoid *實際上是未定義的;這就是爲什麼該工具正在報告某些內容。將它傳遞給GetDIBits時,只需投下pbits即可解決問題。