我使用BCB6,在使用Graphics::TBitmap的时候遇到的问题,关于代码放到循环体内还是循环体外:
代码1:
for(int i=0;i<=100;i++)
{
Graphics::TBitmap *bit2=new Graphics::TBitmap();
bit2->PixelFormat=pf24bit;
bit2->Width=256;
bit2->Height=256;
if(bit2->Canvas->HandleAllocated())
{
//do something
}
else
{
ShowMessage("HandleAllocated error");
}
delete bit2;
}
代码2:
Graphics::TBitmap *bit2=new Graphics::TBitmap();
bit2->PixelFormat=pf24bit;
bit2->Width=256;
bit2->Height=256;
for(int i=0;i<=100;i++)
{
if(bit2->Canvas->HandleAllocated())
{
//do something
}
else
{
ShowMessage("HandleAllocated error");
}
}
delete bit2;
这两段代码,区别就是一个把new和delete的bitmap对象放到循环体内,一个放到循环体外。
代码2运行正常,代码1 弹出HandleAllocated error。这是什么原因呢?