社区
C++ Builder
帖子详情
一个菜鸟问题,恐怕有许多人也有这个问题(50分赠送)
xiaoming851
2002-01-07 08:35:59
一个菜鸟问题,恐怕有许多人也有这个问题
//form2为继承TFORM的
form2 *testwin = new TForm
testwin->Show();
delete testwin
//最后为什么还要删除此指针哪?可是在屏幕上还是可以照样现实此窗口
如果是new form2哪?还需要删除吗?
不删除可以吗?为什么?
谢谢
:)
...全文
162
23
打赏
收藏
一个菜鸟问题,恐怕有许多人也有这个问题(50分赠送)
一个菜鸟问题,恐怕有许多人也有这个问题 //form2为继承TFORM的 form2 *testwin = new TForm testwin->Show(); delete testwin //最后为什么还要删除此指针哪?可是在屏幕上还是可以照样现实此窗口 如果是new form2哪?还需要删除吗? 不删除可以吗?为什么? 谢谢 :)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaoming851
2002-01-10
打赏
举报
回复
to all~~~~~~~~~~~~~~~
谢谢大家,请问
ShowModal()与Show()两者有什么差别,他们占用内存的形势分别是什么??
为什么删除ShowModal()现实出来的窗口实例后,那个窗口为什么会继续显示,除非用close()关闭哪??
谢谢大家呀~~~~
xiaoming851
2002-01-10
打赏
举报
回复
to all~~~~~~~~~~~~~~~
谢谢大家,请问
ShowModal()与Show()两者有什么差别,他们占用内存的形势分别是什么??
为什么删除ShowModal()现实出来的窗口实例后,那个窗口为什么会继续显示,除非用close()关闭哪??
谢谢大家呀~~~~
KingOf007
2002-01-07
打赏
举报
回复
我想你可能是没有搞明白类和类的实例这两个概念,
TForm是个类,你用new的时候,新建了一个TForm的实例,比如testwin,你用delete,也是删除了这个实例,对这个类没有影响,如果这个类还有其它实例,也不会受到影响,所以你还能见到其它的实例(窗口),而这个可以见到的窗口肯定不是你刚才删除的那个;如nickgg(溜达溜达) 所说,一闪而过的才是你delete掉的那个,用testwin->WhowModal()吧
KingOf007
2002-01-07
打赏
举报
回复
你new的时候,实际上是新分配了一块内存,也就是有两个TForm的实例,delete掉一个,还有一个呢:)
xiaoming851
2002-01-07
打赏
举报
回复
------------------------------------------请看清楚在回答,谢谢!!
如果删除了testwin所指向的内存,其实是形成当前窗口所用的内存,如果吧内存删除了,那窗口为什么还会存在哪???
此段内存与窗口有什么关系哪?
---------------------------------------------
hcw_peter
2002-01-07
打赏
举报
回复
有借有還啊!!!
___NULL
2002-01-07
打赏
举报
回复
在 win2000 下的话,只要主程序关闭的话,所有该程序的内存开销都会自动释放,98 则不会
xiaoming851
2002-01-07
打赏
举报
回复
up
??
AirFish
2002-01-07
打赏
举报
回复
testwin->Show()的时候,程序已经暂时终止了,它去执行testwin里的代码了,在你关闭testwin之前,delete是不会执行的.
shiningstar
2002-01-07
打赏
举报
回复
那要是在FormClose里写上Action=caFree;那么还用delete吗?
xiaoming851
2002-01-07
打赏
举报
回复
to nickgg
如果删除了testwin所指向的内存,其实是形成当前窗口所用的内存,如果吧内存删除了,那窗口为什么还会存在哪???
此段内存与窗口有什么关系哪?
nickgg
2002-01-07
打赏
举报
回复
form2 *testwin = new TForm// Error
-> =new TForm2;
testwin->Show();
delete testwin;//应该是一闪而过
zjqc
2002-01-07
打赏
举报
回复
是不是这样的呢?删除内存地址不是等同于删除这个程序,它已经进入内存了,(你看得懂吗?我自己都不知道写什么,只能意会啦!^_^)
xiaoming851
2002-01-07
打赏
举报
回复
to ALL~~~~~~~~~~
呵呵,可能我地表达能力不强,
我的意思是说为什么删除了此内存空间,可是在屏幕上还能看到这个窗口?并且可以操作这个窗口上的一些控件???
这点使我疑惑不解,呵呵,谢谢你们呀
tokens
2002-01-07
打赏
举报
回复
看一下C++方面的书再书BCB吧。。
new是分配内存区的,用完了当然要delete它了,如果不delete的话,运行几次以后你就得重新启动了。。
qiwei
2002-01-07
打赏
举报
回复
不删除也可以,但大好内存就被浪费掉了!
new之后,被分配了一块内存,且别人不能再用了,除非你Delete掉之后!
child_bj
2002-01-07
打赏
举报
回复
/******************AirFish(铁甲飞鱼) (2002-1-7 10:34:16) 得0分
testwin->Show()的时候,程序已经暂时终止了,它去执行testwin里的代码了,在你关闭testwin之前,delete是不会执行的.*******************/
这位兄说错了吧,你说的是ShowModal()的形式。我同意logical(阿来)和 KingOf007(不妨醉一回) 说的。
MasterGo
2002-01-07
打赏
举报
回复
很怪!!
我想是不是当你运行pTestWin->Show();时,BCB首先调用的是Form1的绘窗体函数,再绘
pTestWin的窗体
sbean
2002-01-07
打赏
举报
回复
当用newform->ShowModal()时;
释放空间,用delete newform;
当用newform->Show()时;
将TForm的事件FormClose里写上Action=caFree;
当关闭newform时,空间自动释放,并且(照样现示此窗口)的现象没有了。
sharp_shooter
2002-01-07
打赏
举报
回复
我想你可能是没有搞明白类和类的实例这两个概念,
TForm是个类,你用new的时候,新建了一个TForm的实例,比如testwin,你用delete,也是删除了这个实例,对这个类没有影响,如果这个类还有其它实例,也不会受到影响,所以你还能见到其它的实例(窗口),而这个可以见到的窗口肯定不是你刚才删除的那个;如nickgg(溜达溜达) 所说,一闪而过的才是你delete掉的那个,用testwin->WhowModal()吧
应该是在编译时就出错了的,testwin为指向form2类的指针,而new的是TForm类,
"form2 *testwin = new TForm;"是不是应该改为:"TForm *testwin = new TForm(Application);"或"form2 *testwin = new form2(Application);".
另,如果你想在Show之后删除它就不能简单地用"testwin->Show();",应该用"testwin->ShowModal();"
故代码:
TForm2 *pTestWin = new TForm2(Application);
pTestWin->Show();
delete pTestWin;
运行后是TForm2类型的窗口刚显示又很快地关闭.(正常应用时除了软件封面这样做之外最好别用)
而代码:
TForm2 *pTestWin = new TForm2(Application);
pTestWin->ShowModal();
delete pTestWin;
运行后是TForm2类型的窗口显示出来直到你自己以别的方法关闭它.(常见的应用)
我觉的这两者都对,咋办呢
加载更多回复(3)
ThinkPHP5
菜鸟
必备之:微信扫码支付
微信支付是我们在做项目和网站或商城的时候经常遇到的
一个
问题
,我从接触到熟悉,一步
一个
坑走过来,花费许多时间和精力,为了不让小伙伴们走弯路,特此录制本课程,这套课程是
一个
简易的购物微信支付的全过程,从生成订单到支付完成,再到支付页面的跳转整个过程。目的就是让大家彻底明白微信支付的全过程,也让大家可以把学到的立刻用到项目中。
超频是什么
CPU超频越超系统越慢? 一、故障起因 朋友最近将系统升级到了WinXP,可让他感到奇怪的是系统在进入桌面以后,双击桌面图标没有反应,点击开始菜单选择应用程序同样无法执行。不过这种情况只维持2
分
钟左右就消失了,之后系统一切恢复正常并且之前执行的程序也会同时打开。给人的感觉是系统进入桌面后好像需要休眠几
分
钟似的。由于朋友是个
菜鸟
而且他的电脑也是我帮着攒的,所以出了
问题
他第
一个
想到的就是...
聊聊这个磨人的Bug
一直记得网上流传这么
一个
笑话,有个程序员苦于长期加班单身,找不到女朋友,所以去相亲网站找对象,没想到找了半天,却找出了这个网站一堆bug。这
恐怕
是作为程序员最大的苦恼:热...
从本科生到数据科学家,为啥这个职业门槛高?
参与文末话题讨论,每日
赠送
异步图书——异步小编William Chen是Quora的一位数据科学家,在那里他协助Quora发展壮大,为这个世界
分
享知识。在拿到哈佛大学的统计和应用数学双学位之后,他直接成了一位数据科学家,也是世界上第一批在校期间接受了完整的数据科学课程并且最终在毕业之后直接加入了数据科学领域的学生之一。全职加入Quora之前,他曾经在Quora和Etsy做数...
学习Linux的几点忠告(转贴)
学习Linux的几点忠告(转贴) 可能是很老的帖子了吧............ 最近因为工作的需要和个人的兴趣,开始学习linux的知识,也转了不少的网站,许多
问题
在不同的地方得到了解决,进步是一方面,linuxer们的热情对我也颇有触动。刚才看到楼下的同志在讨论为什么要学习linux,想到以前看的
一个
帖子,讲的就是这方面的
问题
,现在转贴出来给大家
分
享。 可能是很老的帖子了
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章