内存出错的问题(100分)

  • 主题发起人 主题发起人 阿韬
  • 开始时间 开始时间

阿韬

Unregistered / Unconfirmed
GUEST, unregistred user!
我有2个程序,1个exe,1个dll。exe调用dll,其中dll的工程中有一个pas(里面没有定义<br>一个类),里面定义了一些全局变量和函数。只要我在dll工程中使用了这个pas中的变量,<br>我的exe调用dll以后退出的时候总是报内存错,我想应该是没有释放的原因。可是我不知<br>道我使用了一个变量该怎么来释放。我如果不用pas中的变量就不会报错。<br>请问哪位知道怎么解决吗?
 
变量不需要释放,你程序是不是有Create的东西,如有一定要写明Free
 
所有的create我都free了。我只要注释使用那个变量就不报错。打开注释就报错误。
 
是不是你的变量是String类型的。能否把你的问题说清楚。把你的有问题的代码贴出来。
 
对,变量有string类型的,还有自己定义的结构类型也有。<br>代码很简单,比如这样写了。<br>a := b;
 
把dll中string改为Pchar试试
 
关键的部分贴出来看看?
 
zzhdi, 把string改成pchar好像可以。那是不是自己定义的结构里面的元素类型也要<br>改为pchar。这样做的理由是什么?
 
理由?你看一看你的dll project 文件中那段Delphi大师们的注释吧。根据我的经验,能不<br>使用ShareMem 就不使用,我觉得ShareMem 有点不好用。但在你的Application中用String 和Pchar<br>无所谓。
 
uses ShareMem ,并把它作为引用的第一个单元试试
 
同意楼上,STRING类型的变量第一个单元必须是SHAREMEM
 
呵呵!刚刚解答了一个类似的问题,不过要补充一点,<br>不仅在Dll的工程文件中要加上SHAREMEM单元引用,而且在你的<br>应用程序中如果想调用这个DLL,则在工程文件中也必须加上SHAREMEM<br>而且也要做为第一个!注意是工程文件,不是调用的unit !!!<br>还有,即使你在DLL中没有使用STRING,但如果你引用了使用String的单元,包括<br>Delphi自己定义的单元和类,则也必许按照上述的约定!切记!!
 
多谢各位了。我真觉得100分不够给大家分的,有没有办法加分给你们。如果不可以我就<br>只能将这100分给大家了。<br>另外哪位有空介绍几篇关于这个的贴子给我看看呀。
 
问题解决了。谢谢大家,本来想多加点分给大家,可是不知道怎么加。<br>
 
多人接受答案了。
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1223221
 
后退
顶部