gif删除指针出错
void __fastcall TForm1::FormShow(TObject *Sender)
{
RichView1->Clear();
TStringStream *instream=new TStringStream();
instream->LoadFromFile("D:\\1.gif");
instream->Position=0;
tgi=new TGIFImage();
tgi->LoadFromStream(instream);
RichView1->AddPictureEx(NULL,tgi,1,rvvaMiddle);
RichView1->FormatTail();
RichView1->StartAnimation();
delete instream;
}
//---------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
RichView1->StopAnimation();
RichView1->Clear();
//delete tgi;
}
//---------------------------------------
用delete tgi出错,好像是无法访问内存之类的,用RichView1->StopAnimation();RichView1->Clear();是可以的。另外把RichView1->AddPictureEx(NULL,tgi,1,rvvaMiddle);RichView1->FormatTail();RichView1->StartAnimation();这3句注释掉,是可以delete tgi;不会出错,有谁知道是怎么回事?一般指针都可以delete啊,但是在FormDestroy里还不能用是什么原因?估计跟RichView1中的3条语句有关。
[解决办法]
应该是tgi指针是指向同一个地方,但是被释放了两遍。
RichView1->Clear();//第一次释放
delete tgi;//第二次释放,改为 tgi=NULL;
[解决办法]