社区
GAME,图形处理/多媒体
帖子详情
动态创建的组件或窗体的资源释放问题
King_Dragon
2002-05-31 09:40:46
在程序中,属于运行期动态创建的组件或是窗体,如果指定了Owner,没有显示调用组件或窗体的Free方法,在程序结束时会不会自动调用Free方法,释放动态组件所占有的资源?
另外,如果动态创建组件时没有指定Owner参数(Owner为nil),也没有调用Free或Destroy方法,程序结束时会不会自动释放.请说明理由或是原因!
...全文
62
3
打赏
收藏
动态创建的组件或窗体的资源释放问题
在程序中,属于运行期动态创建的组件或是窗体,如果指定了Owner,没有显示调用组件或窗体的Free方法,在程序结束时会不会自动调用Free方法,释放动态组件所占有的资源? 另外,如果动态创建组件时没有指定Owner参数(Owner为nil),也没有调用Free或Destroy方法,程序结束时会不会自动释放.请说明理由或是原因!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hellochina
2002-05-31
打赏
举报
回复
在程序中,属于运行期动态创建的组件或是窗体,如果指定了Owner,没有显示调用组件或窗体的Free方法。那么在Owner Free的时候,就会自动释放组件所占有的资源。
如果Owner的参数为nil的时候,在Owner Free的时候,是不会自动释放组件的,必须自己显示的释放。
因为在TComponent中有一个私有的FComponents,如果在组件Create的时候,如果Owner不为nil, 那么,该组件就会加入到Owner的FComponents,如果组件或者窗体没有调用Free,那么会在Owner Free 的时候,Owner会自动Free FComponents 中的所有成员。如果组件或者窗体自己显示的调用了Free,那么就会从Owner 的FComponents 中删除,不存在Free两次在现象。
详细的情况可以看一下Delphi 中TComponent的实现。
Almzg_0
2002-05-31
打赏
举报
回复
Owner解释为宿主,你自己可以做个小测试。比如在一个PANEL上自动创建一个BUTTON,然后只释放PANEL,你在程序中FINDCOMPONENT将找不到那个BUTTON
bigchg
2002-05-31
打赏
举报
回复
找不到句柄
动态库封装调用
窗体
实例.rar
6. **
释放
资源
**:完成对动态库
窗体
的操作后,记得
释放
动态库(`FreeLibrary`函数)以避免内存泄漏。 在压缩包内的"动态库封装
窗体
与调用"文件中,应该包含了示例的源代码,包括动态库项目和调用动态库的项目。通过...
delphi 动态链接库封装
窗体
与调用
本文将深入探讨如何在Delphi中创建动态链接库(DLL)并封装
窗体
,以及如何从其他应用程序中动态调用这些功能。 动态链接库是一种可共享的代码库,它允许多个应用程序共用同一份代码,从而节省内存和提高性能。在...
Delphi创建多文档
窗体
.rar
- 在MDI主
窗体
的代码中,可以使用CreateMdiChild方法来
动态创建
MDI子
窗体
。例如: ``` procedure TForm1.Button1Click(Sender: TObject); var NewChild: TForm2; begin NewChild := TForm2.Create(Self); ...
Delphi
动态创建
数据模块
1. 错误处理:在
动态创建
和
释放
组件
时,应确保处理可能的异常情况,防止程序崩溃。 2. 事件处理:
动态创建
的
组件
需要手动设置事件处理程序,因为设计时无法通过拖放完成。 3.
资源
管理:合理管理数据模块的生命周期...
Delphi的BPL动态加载
窗体
7. **卸载BPL**:当不再需要动态加载的
窗体
时,可以使用`UnloadPackage`函数卸载BPL,
释放
相关
资源
。确保在卸载前关闭所有由该BPL创建的对象。 在实际应用中,BPL动态加载
窗体
技术常用于大型应用程序,以实现模块化...
GAME,图形处理/多媒体
1,185
社区成员
14,330
社区内容
发帖
与我相关
我的任务
GAME,图形处理/多媒体
Delphi GAME,图形处理/多媒体
复制链接
扫一扫
分享
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章