我在才单项中加入以下代码,当运行两次后就会产生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();