首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

gif删除指针出错解决方案

2012-03-03 
gif删除指针出错void __fastcall TForm1::FormShow(TObject *Sender){RichView1-Clear()TStringStream *

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;

[解决办法]

热点排行