이 question의 답변은 cv :: Mat 이미지를 MFC 응용 프로그램으로 인쇄하는 방법과 관련하여 매우 인기가 있습니다.메모리 누출이 있습니까? 어떻게 방지 할 수 있습니까?
그러나 메모리 누수가 있는지 궁금한가요? 또는없는 경우 어떻게 가능합니까?
특히 memset(bmih, 0, sizeof(*bmih))
부분에 대해 궁금합니다. MFC가 어떻게 든 여기서 메모리를 관리합니까? 누군가 이것에 관한 정보를 제공 할 수 있습니까?
void COpenCVTestView::FillBitmapInfo(BITMAPINFO* bmi, int width, int height, int bpp, int origin)
{
assert(bmi && width >= 0 && height >= 0 && (bpp == 8 || bpp == 24 || bpp == 32));
BITMAPINFOHEADER* bmih = &(bmi->bmiHeader);
// this part shouldn't leak?
memset(bmih, 0, sizeof(*bmih));
bmih->biSize = sizeof(BITMAPINFOHEADER);
bmih->biWidth = width;
bmih->biHeight = origin ? abs(height) : -abs(height);
bmih->biPlanes = 1;
bmih->biBitCount = (unsigned short)bpp;
bmih->biCompression = BI_RGB;
if (bpp == 8)
{
RGBQUAD* palette = bmi->bmiColors;
for (int i = 0; i < 256; i++)
{
palette[i].rgbBlue = palette[i].rgbGreen = palette[i].rgbRed = (BYTE)i;
palette[i].rgbReserved = 0;
}
}
}