导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

问题!!!!!!!高手请进!!!!!!!!!!!!

keyou 2001-04-19 07:49:00
我的程序结构如下:
CWinApp
CMainFrame
CChildView CFrameWnd(5个类) CDialog CSocket(2个类)

我在CDialog里调用主框架的成员函数来退出程序,即调用
CMainFrame::ExitApp()
{
PostQuitMessage(0);
delete AfxGetApp()->GetMainWnd();
}
来退出程序;但是程序要很久才能退出来.还有就是,有时虽然我执行了ExitApp();但不能彻底退出程序,出现程序驻留在机器里,用VC的Process Viewer来观察发现,我的程序依然还在!!!更糟糕的事:在Process Viewer也不能杀死这个程序!!!!?????后来我想肯定是后面那一条语句delete AfxGetApp()->GetMainWnd();作怪,但不加上的话则不执行各个类的析构函数!!!!??????出现内存泄漏.高手帮帮忙了!!!!! :)

还有一个问题就是:我用new来分配动态空间时居然也会出现错误(在KERNEL)!!!(我用了2张位图做界面大小4M左右;5个CFrameWnd、2个CSocket和CChildView类总共7k左右,还有2个数据库!!!)我想问一问大家,windows操作系统给我们提供的堆内存有多少???栈的空间又是多少!!是不是1G呢????(我机器内存64k,硬盘10G).是机顶盒.

我在CMainFrame里用CFrameWnd继承的类来做菜单窗口,这样是不是很不正确呢!!!!!!???
...全文
23 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hopelion 2001-04-20
duz你好!谢谢你参与!!我知道你是个高手!!!!我看过很多你的帖子!!!我的是多线程程序,怎么退出主线程呀!(我现在用的就是postquitmessage(0))来退出。也试过exit(0))ExitApp()是我自己添加的退出应用程序的函数。我分别在主框架类里用过exit(0)和postquitmessage(0)来退出程序!还是出现我上面说的问题!!!我说的new出现问题不是说数组越界,而是在new时就出现错误!这个问题会不会是别的问题引起的????!
回复
duz 2001-04-19
你使用了多线程?或者是你根本就没有退出主线程?
好像CFrameWnd没有ExitApp函数,是你自己定义的了?
问题也可能在于你调用了PostQuitMessage。
你是根本用不着调用PostQuitMessage的,调用
PostQuitMessage(0),将使你主线程的消息处理循环退出,因而在你删除你的主窗口时,DestroyWindow可能会失败(没有消息处理循环了)。

一帮来说,使用new出现错误是由于内存访问越界引起的。比如
p=new int[10];
p[-1]=1;就可能会引起这样的问题。
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……