菜鸟请问:如何对在DLL中动态分配的内存空间进行操作?(参数类型char**) ( 积分: 70 )

  • 主题发起人 主题发起人 markss
  • 开始时间 开始时间
M

markss

Unregistered / Unconfirmed
GUEST, unregistred user!
要用delphi调用一个DLL,其中的函数定义int funa(char** pbuf);<br>用delphi定义为function funa(var pbuf:Pchar):integer;<br><br>var<br> &nbsp;buf1:pchar;<br><br>begin<br> &nbsp;fillchar(buf1,sizeof(pbuf),#0);<br> &nbsp;funa(buf1);<br> &nbsp;memo1.lines.add('返回数据:'+buf1);<br>end;<br><br>由于buf1传进去的是指针,而且内存是在DLL中生成的,不想对其中内容修改,但是我想将取出来的内容进行修改,所以希望在funa外面新分配一个同size的内存空间buf2,不过应该如何得到分配给buf1的大小呢?还有就是如何将buf1的内容cpoy给外面的变量buf2呢?<br><br>还有就是DLL说明在其中分配的该内存变量会在DLL卸载时被删除,那么什么时候DLL才会被卸载呢?是在关闭调用DLL的应用程序时自动卸载,还是在关闭操作系统时才会被卸载?谢谢<br><br>
 
要用delphi调用一个DLL,其中的函数定义int funa(char** pbuf);<br>用delphi定义为function funa(var pbuf:Pchar):integer;<br><br>var<br> &nbsp;buf1:pchar;<br><br>begin<br> &nbsp;fillchar(buf1,sizeof(pbuf),#0);<br> &nbsp;funa(buf1);<br> &nbsp;memo1.lines.add('返回数据:'+buf1);<br>end;<br><br>由于buf1传进去的是指针,而且内存是在DLL中生成的,不想对其中内容修改,但是我想将取出来的内容进行修改,所以希望在funa外面新分配一个同size的内存空间buf2,不过应该如何得到分配给buf1的大小呢?还有就是如何将buf1的内容cpoy给外面的变量buf2呢?<br><br>还有就是DLL说明在其中分配的该内存变量会在DLL卸载时被删除,那么什么时候DLL才会被卸载呢?是在关闭调用DLL的应用程序时自动卸载,还是在关闭操作系统时才会被卸载?谢谢<br><br>
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部