不断的new及delete对象或数组会产生内存碎片吗?
类似这样:
struce imageList
{
CBitmap *bmp;
BOOL isuse;
};
void CreateBmp()
{
m_Images = new imageList[300];
for(int i = 0; i < 300; i++)
{
m_Images[i].bmp = new CBitmap;
m_Images[i].bmp->CreateCompatibleBitmap(pDC, 120,120);
}
}
void AddImage(imageList *image)
{
int iCnt = int(_msize(m_Images)/sizeof(imageList));
imageList *tmp = new imageList[iCnt + 1];
tmp[iCnt].bmp = image.bmp;
tmp[iCnt].isuse = image.isuse ;
for(int i = 0; i < iCnt ; i++)
{
tmp[i].bmp = m_Images[i].bmp;
tmp[i].isuse = m_Images[i].isuse;
}
delete[] m_Images;
m_Images = tmp;
}
UINT DelBmp()
{
int iCnt = int(_msize(m_Images)/sizeof(imageList));
for(int i = 0; i < iCnt; i++)
{
m_Images[i].bmp->DeleteObject();
}
delete[]m_Images;
m_Images = NULL;
}
那么不断象下面这样运行会不断产生内存碎片吗?系统会不会自动回收这些碎片?:
CreateBmp();
AddImage(image);
DelBmp();
AddImage(image);
AddImage(image);
AddImage(image);
DelBmp();
CreateBmp();
AddImage(image);
AddImage(image);