社区
Delphi
帖子详情
释放对象
xin_qing0
2010-06-28 01:19:51
我写了一个带FORM的DLL,放到主程序下面被调用,当关闭主程序后,资源管理器中主程序仍然在运行,需要在资源管理器里再将主程序关闭,为什么会出现这种情况,是因为我DLL里有对象没有释放掉?
我是这么写的:
frmTest := nil;
try
frmTest := TfrmTest .Create(nil);
frmTest.ShowModal;
finally
FreeAndNil(frmTest);
end;
...全文
275
18
打赏
收藏
释放对象
我写了一个带FORM的DLL,放到主程序下面被调用,当关闭主程序后,资源管理器中主程序仍然在运行,需要在资源管理器里再将主程序关闭,为什么会出现这种情况,是因为我DLL里有对象没有释放掉? 我是这么写的: frmTest := nil; try frmTest := TfrmTest .Create(nil); frmTest.ShowModal; finally FreeAndNil(frmTest); end;
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ddzjok
2010-07-01
打赏
举报
回复
dll应该没问题,可能是别的程序的问题吧。
nkym0626
2010-07-01
打赏
举报
回复
顶起来
xin_qing0
2010-06-30
打赏
举报
回复
问题还是没解决,主程序仍需在资源管理器里关闭
xjwy
2010-06-30
打赏
举报
回复
还有什么呢问题那?这个帖子现在还在?
xin_qing0
2010-06-30
打赏
举报
回复
自己顶,呵呵
starluck
2010-06-29
打赏
举报
回复
[Quote=引用楼主 xin_qing0 的回复:]
我写了一个带FORM的DLL,放到主程序下面被调用,当关闭主程序后,资源管理器中主程序仍然在运行,需要在资源管理器里再将主程序关闭,为什么会出现这种情况,是因为我DLL里有对象没有释放掉?
我是这么写的:
frmTest := nil;
try
frmTest := TfrmTest .Create(nil);
frmTest.ShowModal;
fi……
[/Quote]
Application.createForm 第一个建立的FORM是哪一个?
右脚小拇指
2010-06-29
打赏
举报
回复
[Quote=引用 7 楼 xin_qing0 的回复:]
谢谢!
frmTest := nil;
FreeAndNil(frmTest);
中间没有Create,会有问题吗
[/Quote]
不会有问题, FreeAndNil 函数内部自己也会判断处理
xin_qing0
2010-06-29
打赏
举报
回复
我没有用ShowMadal,因为from上显示的是一张报表,用QUICKREPORT做的,所以我直接用frmTest.QuickRep1.Preview;
vincent_cheung
2010-06-29
打赏
举报
回复
1、ShowMadal改为Show
2、在frmTest OnClose下写代码释放frmTest内所有资源
3、在frmTest OnClose下Action:=CaFree;
三个方法,我没测过,你自己试一下,测完记得把结果发上来
newfang
2010-06-28
打赏
举报
回复
关键不是这点儿代码,还有主程序调用dll那里,看你是怎么写的……
xin_qing0
2010-06-28
打赏
举报
回复
还是自己顶
xin_qing0
2010-06-28
打赏
举报
回复
谢谢!
frmTest := nil;
FreeAndNil(frmTest);
中间没有Create,会有问题吗
xjwy
2010-06-28
打赏
举报
回复
try
if not Assigned(frmTest) then frmTest := TfrmTest .Create(nil);
frmTest.ShowModal;
finally
FreeAndNil(frmTest);
end;
这样好些。
xin_qing0
2010-06-28
打赏
举报
回复
自己顶
xin_qing0
2010-06-28
打赏
举报
回复
如果我没有frmTest := TfrmTest .Create(nil);
而是frmTest := nil; 接着直接FreeAndNil(frmTest);
这样是不对的吧
xin_qing0
2010-06-28
打赏
举报
回复
from上显示的一张报表,用QUICKREPORT做的,frmTest.ShowModal 应该改为frmTest.QuickRep1.Preview;
调用完应该走 finally
FreeAndNil(frmTest);
end;
主程序的代码我是看不见的,
是动态调用
亮剑_
2010-06-28
打赏
举报
回复
DLL是静态调用还是动态加载,程序退出时是如何处理的
bdmh
2010-06-28
打赏
举报
回复
关闭时干吗了,dll是否释放,是否执行了死循环
WPS JS宏从入门到放弃(JSA/JS宏编程教程)
课程简介: 第01章 WPS表格基础与JS宏基础(已完成) 第02章 JS宏循环语句应用(已完成) 第03章 WPS表格常用
对象
应用(已完成) 第04章 自定义函数(已完成) 第05章 WPS JS宏数组技术(已完成) 第06章 WPS JS宏...
java
释放
对象
_java基础:
对象
的销毁
在java中每个被分配了内存的
对象
最终是要被清理的,那么当系统不能准确的去判断并
释放
这些
对象
时,就需要程序员在这个
对象
的类里面创建一个finalize()的方法,方法告诉程序当满足一个特定的条件时,就
释放
对象
。...
java
释放
对象
_请问在JAVA中如何删除一个
对象
,也就是
释放
一个
对象
所占的内存....
会调用
对象
的finalize方法来
释放
对象
占据的内存空间~java中垃圾回收以前听老师讲好像是内存满了他才去做一次整体垃圾回收,在回收垃圾的同时会调用finalize方法....
C++析构函数
释放
对象
的空间顺序。
1. 作用:
对象
消亡时,自动被调用,用来
释放
对象
占用的空间 2.特点: (1) 名字与类名相同 (2) 在前面需要加上"~" (3) 无参数,无返回值 (4) 一个类最多只有一个析构函数 (5) 不显示定义析构...
如果
对象
的引用被置为null,垃圾收集器是否会立即
释放
对象
占用的内存?
不会立即
释放
对象
占用的内存。 如果
对象
的引用被置为null,只是断开了当前线程栈帧中对该
对象
的引用关系,而 垃圾收集器是运行在后台的线程,只有当用户线程运行到安全点(safe point)或者安全区域才会扫描
对象
引用...
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章