为什么会造成Debug Error的错误?
我在才单项中加入以下代码,当运行两次后就会产生Debug Error的错误,错误出现在内存分配上,可是我已经释放内存空间了
//位图的马赛克效果
int nTileSize = 5; //小方块的大小
LONG lTileNum; //小方块的数量
int nrw = 0;
int nrh = 0;
pDC = GetDC();
ClearBitmap();
MemDC.CreateCompatibleDC(pDC);
pOldBitmap = (CBitmap*) MemDC.SelectObject(&Bitmap);
if((bm.bmWidth % nTileSize) != 0)
nrw = 1;
if((bm.bmHeight % nTileSize) != 0)
nrh = 1;
lTileNum = (bm.bmWidth / nTileSize + nrw) * (bm.bmHeight / nTileSize + nrh);
//给纪录小方块左上角坐标的POINTS结构数据分配内存
POINT *pt = new POINT[lTileNum];
//初始化数组
LONG mx = 0;
LONG my = 0;
for(LONG mi = 0; mi < lTileNum; mi++)
{
pt[mi].x = mx;
pt[mi].y = my;
mx += nTileSize;
if(mx > bm.bmWidth)
{
mx = 0;
my += nTileSize;
}
}
//开始随机显示小方块
double fMax = RAND_MAX;
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
for(mi = lTileNum-1; mi > 0; mi--)
{
int n = (int)((double) lTileNum * rand() / fMax);
mx = pt[n].x;
my = pt[n].y;
pDC->BitBlt(mx, my, nTileSize, nTileSize, &MemDC, mx, my, SRCCOPY);
pt[n].x = pt[mi].x;
pt[n].y = pt[mi].y;
}
delete []pt;
MemDC.SelectObject(pOldBitmap);
MemDC.DeleteDC();