如果我要退出我的程序,我在初始化时用new分配的内存如何释放?
是在“确定”和“取消”两个函数中都要释放吗?
还有“关闭”按钮,好像是个OnDestroy()函数,我是否也要同时自己改写它?
迷惑中,望各位指点一下。
9 个解决方案
#1
“确定”和“取消”最后也会调用到OnDestroy,你可以放到OnDestroy里,也可以放到析构函数里。
简单的方法是释放完记得赋值NULL,然后再释放时判断是否为NULL来决定是否应该不释放。
简单的方法是释放完记得赋值NULL,然后再释放时判断是否为NULL来决定是否应该不释放。
#2
“确定”和“取消”是从用户角度来看的,在修改对话框内任何值后,“确定”就是说要改,而“取消”就是说所有的改动都不要。“关闭”与“取消”是一个意思。
退出对话框要根据对话框的模式(模态,非模态)而定。
退出对话框要根据对话框的模式(模态,非模态)而定。
#3
呵呵, 典型的会了MFC而忘记C++的问题~~~
析构函数的功能,就是做"善后"工作的啊!!释放内存,句柄,退出子线程等等都是在这里做的.
析构函数的功能,就是做"善后"工作的啊!!释放内存,句柄,退出子线程等等都是在这里做的.
#4
多谢楼上的指点,我也想到了在析构函数里做释放工作,可是自动生成的对话框程序中,只有构造函数,却没有析构函数。
我想自己加上它并改写,可是没找到在哪里加。我用的是vs2005
不会是自己手动添加这个析构函数吧,我觉得id里应该有相应的操作吧。
再有就是在OnDestroy()函数里和在析构函数里做清理工作有什么不同吗?哪个更好点?
我做的是模式对话框。
顺便问一下,这个帖子的分数能不能提高啊,发的时候没看,选了20分,怕到时候不够分给大家了
我想自己加上它并改写,可是没找到在哪里加。我用的是vs2005
不会是自己手动添加这个析构函数吧,我觉得id里应该有相应的操作吧。
再有就是在OnDestroy()函数里和在析构函数里做清理工作有什么不同吗?哪个更好点?
我做的是模式对话框。
顺便问一下,这个帖子的分数能不能提高啊,发的时候没看,选了20分,怕到时候不够分给大家了
#5
析构是系统干的事情,你去干扰了干嘛啊?不懂
#6
用不着你管
#7
析构函数要自己写的
#8
可怜的楼主,竟然析构函数都忘了怎么写了,那一定也不知道虚析构的用处喽,那么继承、抽象啥的更加不用提了,那再高级的设计模式就更加没影了,楼主啊,努力吧,你的路还很长。。。。。。。。。。。。
#9
路漫漫其修远兮,慢慢来
#1
“确定”和“取消”最后也会调用到OnDestroy,你可以放到OnDestroy里,也可以放到析构函数里。
简单的方法是释放完记得赋值NULL,然后再释放时判断是否为NULL来决定是否应该不释放。
简单的方法是释放完记得赋值NULL,然后再释放时判断是否为NULL来决定是否应该不释放。
#2
“确定”和“取消”是从用户角度来看的,在修改对话框内任何值后,“确定”就是说要改,而“取消”就是说所有的改动都不要。“关闭”与“取消”是一个意思。
退出对话框要根据对话框的模式(模态,非模态)而定。
退出对话框要根据对话框的模式(模态,非模态)而定。
#3
呵呵, 典型的会了MFC而忘记C++的问题~~~
析构函数的功能,就是做"善后"工作的啊!!释放内存,句柄,退出子线程等等都是在这里做的.
析构函数的功能,就是做"善后"工作的啊!!释放内存,句柄,退出子线程等等都是在这里做的.
#4
多谢楼上的指点,我也想到了在析构函数里做释放工作,可是自动生成的对话框程序中,只有构造函数,却没有析构函数。
我想自己加上它并改写,可是没找到在哪里加。我用的是vs2005
不会是自己手动添加这个析构函数吧,我觉得id里应该有相应的操作吧。
再有就是在OnDestroy()函数里和在析构函数里做清理工作有什么不同吗?哪个更好点?
我做的是模式对话框。
顺便问一下,这个帖子的分数能不能提高啊,发的时候没看,选了20分,怕到时候不够分给大家了
我想自己加上它并改写,可是没找到在哪里加。我用的是vs2005
不会是自己手动添加这个析构函数吧,我觉得id里应该有相应的操作吧。
再有就是在OnDestroy()函数里和在析构函数里做清理工作有什么不同吗?哪个更好点?
我做的是模式对话框。
顺便问一下,这个帖子的分数能不能提高啊,发的时候没看,选了20分,怕到时候不够分给大家了
#5
析构是系统干的事情,你去干扰了干嘛啊?不懂
#6
用不着你管
#7
析构函数要自己写的
#8
可怜的楼主,竟然析构函数都忘了怎么写了,那一定也不知道虚析构的用处喽,那么继承、抽象啥的更加不用提了,那再高级的设计模式就更加没影了,楼主啊,努力吧,你的路还很长。。。。。。。。。。。。
#9
路漫漫其修远兮,慢慢来