有关析构函数的问题

fyjin99 2004-04-06 10:59:32
各位大侠帮帮忙呀!下面是小弟写的一个类,我在Form中调用的时候析构函数在执行delete TSLGrid的时候总是出错不知道为什么。还有我在Form中访问fGridData的数据时总是出错。当采用静态分配或不在析构函数中delete fGridData 就不出错。在我的访问过程中程序自动调用过一次析构函数.我的访问过程如下:CGrid CGData; ..... ; CGData = CGrid(FileName);(此时自动调用一次析构函数。)请各位大侠帮忙解决!
#define MAXCOUNT 30000
class CGrid{
public:
CGrid(){}
CGrid(AnsiString FileName);
~CGrid();
float *fGridData;
private:
TStringList *TSLGrid;
};

CGrid::CGrid(AnsiString FileName)
{
TSLGrid = new TStringList();
fGridData = new float [MAXCOUNT];
assert(fGridData != 0);
.........................
此处程序产生fGridData数组
.........................
}

CGrid::~CGrid()
{
delete [] fGridData;
delete TSLGrid;
ASName.~AnsiString();
}
...全文
43 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoudai0208 2004-04-11
  • 打赏
  • 举报
回复
莫名其妙啊,这怎么会出错
fyjin99 2004-04-07
  • 打赏
  • 举报
回复
~AnsiString 是AnsiString类的析构函数,我用ASName.~AnsiString()来释放ASName的内存。
用while(TSLGrid->Count)
{
TSLGrid->Delete(0);
}
delete TSLGrid;也还是出错。还有访问数据出错的问题也请各位大侠帮帮忙呀。
xiaoshi0 2004-04-07
  • 打赏
  • 举报
回复
不能直接删除TSLGrid
应该是:
while(TSLGrid->Count)
{
TSLGrid->Delete(0);
}
delete TSLGrid;
wcccc1 2004-04-07
  • 打赏
  • 举报
回复
对啊。这个是做什么?
xiaoshi0 2004-04-07
  • 打赏
  • 举报
回复
晕,看来毛病不是出在这的
pp616 2004-04-06
  • 打赏
  • 举报
回复
ASName.~AnsiString();
???

13,874

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧