社区
语言基础/算法/系统设计
帖子详情
关于的delphi中的指针问题(感兴趣者进,为了分数者免)
louisqiang
2005-12-11 04:18:29
我写了一个dll,其中有一个函数返回一个数组,
然后我在一个窗体应用程序中调用,但是每次每次循环调用完毕都有一个指针错误。
后来,我把接受数组的变量改成模块级别的变量,运行的时候没有问题了,
但窗体退出的时候,问题照样存在。
这明显是释放了不该释放的指针或释放的时候指针已经是nil的。
请大家讨论delphi中内存管理,与指针的使用。
...全文
168
7
打赏
收藏
关于的delphi中的指针问题(感兴趣者进,为了分数者免)
我写了一个dll,其中有一个函数返回一个数组, 然后我在一个窗体应用程序中调用,但是每次每次循环调用完毕都有一个指针错误。 后来,我把接受数组的变量改成模块级别的变量,运行的时候没有问题了, 但窗体退出的时候,问题照样存在。 这明显是释放了不该释放的指针或释放的时候指针已经是nil的。 请大家讨论delphi中内存管理,与指针的使用。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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来释放绝对是一个愚蠢的做法。
有关
Delphi
控件开发讨论
本论总预算1000分, 想与此道高手结识, 有能者得之请勿发表不相干言论,
分数
只会分给内容最精辟正确之人; 没有具体言论者, 请勿回复; 相同意见, 只给第一个发表之人以下是可以回答的方向, 供参考1. VCL控件开发的几个主要基类TComponent、TControl、TWinControl、TGraphicControl、TCustomControl的主要功能及各类用途!?2. Comp
delphi
5开发人员指南_建立开发人员职位的黄金指南
delphi
5开发人员指南Landing a software engineering position can be one of the most difficult obstacles that you can face. Each rejection can feel like a punch to the face.获得软件工程职位可能是您面临的最困难的障碍之一。 每次拒绝都会给人以冲击...
a*寻路算法
原文:http://www.gamedev.net/reference/articles/article2003.asp下面是一位网友的翻译(原文地址:http://data.gameres.com/message.asp?TopicID=25439)A*寻路初探 GameDev.net 译者序:很久以前就知道了A*算法,但是从未认真读过相关的文章,也没有看过代码...
计算机专业
中
经典书籍(程序猿和大学生必读)
2楼 : JAVA篇 此篇收录:.《Java 2 核心技术》、2.《Java编程语言》、3.《Effective Java》、4.《Java解惑》、5.《Java编程思想》 3楼: C篇 此篇收录:1.《C程序设计语言》、2.《C和
指针
》、3.《C陷阱与缺陷》、4.《C专家编程》、5.《你必须知道的495个C语言
问题
》 4楼: C++篇 此篇收录:1.《C++ Primer》、2
计算机经典书籍电子书合集(适合计算机学生学习以及程序员笔试、面试)
2楼 : JAVA篇 此篇收录:.《Java 2 核心技术》、2.《Java编程语言》、3.《Effective Java》、4.《Java解惑》、5.《Java编程思想》 3楼: C篇 此篇收录:1.《C程序设计语言》、2.《C和
指针
》、3.《C陷阱与缺陷》、4.《C专家编程》、5.《你必须知道的495个C语言
问题
》 4楼: C++篇 此篇收录:1.《C++ Primer》、2
语言基础/算法/系统设计
16,747
社区成员
33,239
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章