Fox Toolkit应用程序内存出错浅析
来源:互联网 发布:c语言源代码 编辑:程序博客网 时间:2024/05/18 13:47
今天用Fox Toolkit编写了一个小Demo程序,但在程序运行结束时,总会出现内存出错的提示。其部分代码如下:
TestWindow::TestWindow(FXApp* a):FXMainWindow(a,"Test Window",NULL,NULL,DECOR_ALL,0,0,800,600)
{
// Menu bar
menubar=new FXMenuBar(this,LAYOUT_SIDE_TOP|LAYOUT_FILL_X);
// File menu
filemenu=new FXMenuPane(this);
new FXMenuCommand(filemenu,"Quit/tCtl-Q",NULL,getApp(),FXApp::ID_QUIT);
new FXMenuTitle(menubar,"&File",NULL,filemenu);
// Status bar
status=new FXStatusBar(this,LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|STATUSBAR_WITH_DRAGCORNER);
// Main window
contents=new FXVerticalFrame(
this,
LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|LAYOUT_FILL_Y);
leftFrame=new FXVerticalFrame(
contents,
FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_TOP|LAYOUT_LEFT,
0,0,0,0,10,10,10,10);
.......
}
TestWindow::~TestWindow(){
delete filemenu;
delete menubar;
delete contents; /*注意这里的顺序是错误的*/
delete leftFrame;
}
之所以出现内存出错,是因为TestWindow类的析构函数中各组件的释放顺序。上述代码中,leftFrame是依据contents建立的,即leftFrame是在contents容器中。因此,当delete contents后,再delete leftFrame就会因为找不到contents而出现内存出错的提示,delete不成功。
了解了原因之后,只需将这里的delete顺序更改一下即可,先delete leftFrame再delete contents。如果contents容器中同样存在其他组件,则必须先将这些组件delete完后,才可delete contents。其他容器的释放顺序也需按照这一规则。
- Fox Toolkit应用程序内存出错浅析
- FOX-Toolkit: Hello, World.
- FOX-Toolkit: Introduct
- FOX TOOLKIT 学习 - 文本显示
- FOX—TOOLKIT 文档索引
- ubuntu 12.04编译安装FOX TOOLKIT
- Toolkit(示例,出错代码)
- 浅析内存
- 安装office2010 Toolkit应用程序正常初始化失败
- svchost.exe应用程序出错
- svchost.exe应用程序出错 说该内存不能为”written”该怎么办?
- Symbian 应用程序框架浅析
- Symbian 应用程序框架浅析
- 应用程序域(AppDomain)浅析
- 应用程序域(AppDomain) 浅析
- Symbian 应用程序框架浅析
- Symbian 应用程序框架浅析
- Symbian 应用程序框架浅析
- eclipse的一些快捷操作
- jdbc连接SQLServer2005出现 NO suitable driver问题的一个原因
- CSS样式
- H.264名词
- 《画皮》的原版故事
- Fox Toolkit应用程序内存出错浅析
- 怕寂寞
- 学习Mechanics of Datafile Restore Operations的注意点
- Hibernate基础知识
- AVS264_FAQ集锦
- 使用Jmagick压缩高质量图片
- 朋友们好!
- 求助一BCB的问题?
- VS竞技游戏平台辅助外挂制作实例