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

c++ builder关于内存储器释放

2012-09-21 
c++ builder关于内存释放TStrings *bnew TStringList()这样调用后,怎么样释放掉,我用delete b编译不出

c++ builder关于内存释放
TStrings *b=new TStringList();这样调用后,怎么样释放掉,我用delete b;编译不出错,可运行后会出错,为什么了?
b->Clear()好像可以。不知道释放是不是要调用他。

[解决办法]
TStrings *b=new TStringList(); TStrings???TstringList?
[解决办法]
为什么要把b声明成TStrings?
[解决办法]
释放就是delete就可以了。
你这里出错应该是函数返回的指针不需要你释放,比如在你delete后面的代码中又被重新释放了。
或者函数返回的指针本身就是非法指针
或者其他代码问题引起的。
[解决办法]

探讨
因为有个函数的返回是TStrings *,所以我把函数的返回值给了b.

[解决办法]
C/C++ code
  TStrings *s;  s = new TStringList();  s->Add("hello");  delete s;  s = NULL;
[解决办法]
TStringList 继承与TStrings ,这个基类指针应该可以这样操作吧
[解决办法]
你用s=func(),func返回一个TStrings *类型

什么意思
C/C++ code
TStrings *s;s = new TStringList();s->Add("hello");s->Clear();delete s;s = NULL;你干脆这样用TStringList*s;s = new TStringList();s->Add("hello");s->Clear();delete s;s = NULL;
[解决办法]
s=。。 改为 s->AddStrings(...);
C/C++ code
void __fastcall TForm1::Button1Click(TObject *Sender){   TStrings *s;   s = new TStringList();   s->AddStrings(Memo1->Lines); //这样赋值   s->Clear();   delete s;   s = NULL;} 

热点排行