BITMAPFILEHEADER bfSize
DIBからBMPファイルを作成する処理の一部です。
int nImageSize = pDIB->biSizeImage + (sizeof(RGBQUAD)*dwPaletteSize)+sizeof(BITMAPINFOHEADER);
BITMAPFILEHEADER bmpFIH = {0};
bmpFIH.bfType = ( (WORD) ('M' << 8) | 'B');
bmpFIH.bfSize = nImageSize + sizeof(BITMAPFILEHEADER);
bmpFIH.bfOffBits = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+(sizeof(RGBQUAD)*dwPaletteSize);
fwrite(&bmpFIH, 1, sizeof(BITMAPFILEHEADER), pFile);
fwrite(pDIB, 1, nImageSize, pFile);
fclose(pFile);
pFile = 0;
BMPファイルは作成されますが、メモリリークします。
bmpFIH.bfSize を 0 またはそれに近い小さな数字にすると、メモリリークは検出されません。
bmpFIH.bfSize はファイルサイズのようですが、これが入っていないと問題でしょうか?
また入れるとすればどのような数字を入れるべきでしょうか?(メモリリークの原因も含めて)
宜しくお願いします。
開発環境:VC++ 2008 MFC