gpt4 book ai didi

c++ - 这会泄漏内存吗?我该如何预防?

转载 作者:太空宇宙 更新时间:2023-11-04 15:07:37 25 4
gpt4 key购买 nike

我看到这个 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;
}
}
}

最佳答案

你在哪里看到内存泄漏?没有动态分配,也没有指针操作。 memset 可能导致内存泄漏,如果它覆盖了指向动态分配内存的指针,但是没有BITMAPINFOHEADER 中的指针,只是整数。

关于c++ - 这会泄漏内存吗?我该如何预防?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10346547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com