请各位近来看看关于图形的析构的问题。很紧急,拜托了!分不够,另外加!!!
TMemoryStream* pms = new TMemoryStream();
BlobField::Read(m_tblPlan, "BackPic", pms);
BkPic=new TPicture();// TPicture* BkPic;
if(pms->Size) BkPic->Graphic=Util::LoadGraphicFromStream(pms);
delete pms;
最后:
if(BkPic) delete BkPic;
最后我删除Bkpic(注意没有删除它的GRAPHIC属性!)
以下是名字空间Util中的定义:
TGraphic* LoadGraphicFromStream(TMemoryStream* MS)
{
TGraphic* pg = NULL;
pg = new Graphics::TBitmap();//这里NEW了但是没有写配套的DELETE
pg->LoadFromStream(MS);
return pg;
}
只这样是不是会发生内存泄露错误呢?因为缺少一个delete。
但是我看帮助上说TPicture相当于一个容器,那是不是只要删除就也就代表删除了其中的pg呢?
如何确实发生泄露的话,应该怎么操作呢?
我这样写:
if(BkPic)
{
delete BkPic->Graphic;
delete BkPic;
}
电脑提示错误:
Access Violation at address 00000044,Read of Address 00000044!!