社区
语言基础/算法/系统设计
帖子详情
关于的delphi中的指针问题(感兴趣者进,为了分数者免)
louisqiang
2005-12-11 04:18:29
我写了一个dll,其中有一个函数返回一个数组,
然后我在一个窗体应用程序中调用,但是每次每次循环调用完毕都有一个指针错误。
后来,我把接受数组的变量改成模块级别的变量,运行的时候没有问题了,
但窗体退出的时候,问题照样存在。
这明显是释放了不该释放的指针或释放的时候指针已经是nil的。
请大家讨论delphi中内存管理,与指针的使用。
...全文
229
7
打赏
收藏
关于的delphi中的指针问题(感兴趣者进,为了分数者免)
我写了一个dll,其中有一个函数返回一个数组, 然后我在一个窗体应用程序中调用,但是每次每次循环调用完毕都有一个指针错误。 后来,我把接受数组的变量改成模块级别的变量,运行的时候没有问题了, 但窗体退出的时候,问题照样存在。 这明显是释放了不该释放的指针或释放的时候指针已经是nil的。 请大家讨论delphi中内存管理,与指针的使用。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
followwater
2005-12-12
打赏
举报
回复
动态数组或string由系统管理内存,并不是简单的一个指针,还包括引用技术等,所以在不同模块中传输会有释放内存不匹配的问题,不要用他们做var类型参数或返回值
仙侣步惊云
2005-12-12
打赏
举报
回复
不要用dll中的函数返回数组,这会带来许多内存管理的问题.
建议在dll中使用内存映象文件传递数组.
qizhanfeng
2005-12-12
打赏
举报
回复
学习
aiirii
2005-12-11
打赏
举报
回复
你代码处理的问题,
clasj
2005-12-11
打赏
举报
回复
在exe中申请/释放内存,将数组作为指针参数调用dll,在dll中改数组的值
同意:)
参考windows api的做法吧:
procedure f(var buf; const bufsize: Integer);
柯本
2005-12-11
打赏
举报
回复
***所以由dll分配内存然后交给exe来释放绝对是一个愚蠢的做法。
同意!
其实在dll中返回数组,不仅仅在delphi中有楼主说的问题,在C/C++中问题同样存在
我的一般作法是,返回静态(或全程)数组.这样,不用动态分配内存,唯一的缺点是只能返回固定长度的数组
当然,正规的作法(多看国外高手源码)
在exe中申请/释放内存,将数组作为指针参数调用dll,在dll中改数组的值
阿呆_
2005-12-11
打赏
举报
回复
如果你没有uses sharemem那么exe和dll都有自己单独的内存管理模块。 互访由于处于同一个进程空间并且不违反windows的virtual memory访问规则所以不出错, 但是由其中一个释放另一个申请的内存则必然出现问题, 因为这个内存管理器中并没有记录另一个内存管理器分配的内存块。
所以由dll分配内存然后交给exe来释放绝对是一个愚蠢的做法。
2020年Github上最牛的Java
进
阶教程及Java实战项目都在这里了!
写在前面 大家都知道 Github 是一个程序员福地,这里有各种厉害的开源框架、软件或者教程。这些东西对于我们学习和
进
步有着莫大的
进
步,所以我有了这个将 Github 上非常棒的 Java 开源项目整理下来的想法。觉得不错的话,欢迎小伙伴们去star一波。 很多小伙伴都不知道学习什么开源项目,这篇文章定能为你解决疑惑。 不论你想要看 Java 教程方向的开源项目、Java实战项目、SpringBoot教程还是说想要看微服务、分布式相关的开源项目,你都可以在上面找到需要的资源! 项目的整个目录如下,可
Java项目实战练习:从基础到
进
阶
Java作为一门广泛使用的编程语言,项目实战练习是深入理解其核心理念和提高开发技能的重要方式。通过模拟企业级项目的开发流程,不仅能够锻炼编码能力,还能增强对项目需求分析、设计模式应用、性能优化等综合技能的掌握。异常处理是Java语言的一个重要特性,它能够帮助开发者有效地处理运行时错误和非正常情况。自定义异常允许开发者创建特定于应用程序的异常类型。示例代码:");逻辑分析与参数说明:这里定义了一个自定义异常,它继承自Java的Exception类。在方法
中
可以抛出。
Java自学基础、
进
阶、项目实战网站推荐
模仿天猫官网后端JEE 模范天猫官网SSH 模范天猫官网SSM 模仿天猫官网SpringBoot 模仿天猫官网前端 一本糊涂账Java项目
适合Java初学者练习的项目
这里写自定义目录标题欢迎使用Markdown编辑器新的改变3. 学生管理系统4. 后台管理系统脚手架5. 仿小米商城6. 秒杀系统7. 小结 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器
进
行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界
语言基础/算法/系统设计
16,741
社区成员
33,233
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章