我在dll中有个返回list的函数,但是在释放dll的时候出错(100分)

  • 主题发起人 主题发起人 盛利
  • 开始时间 开始时间
但是我在内容不是很多的时候
不出错
只是字符串内容太长的时候才出错的
 
是啊,我也这么觉的。
 
而且,如果是这样解释的话,pchar应该不能用作函数的返回值,因为一旦函数返回,string
就释放了,pchar指向的就是释放的内存区域……
 
释放的内存,不是释放回操作系统,只是回收到“堆”
指针还是有效的,但是内容可能被其他操作覆盖
 
就是这样解释,用不着怀疑。
 
当然,用全局变量也是简便的解决,如果你再调用一次content函数,修改了全局变亮g_content,那么
上一次返回的指针又失效了,所以你拿到指针就要处理,或者用strcopy拷贝到自己的内存
否则留起来也留不长时间的
 
还是有些疑惑,我再试验几次。
 
pipi.TList的问题还是没有解决啊!
procedure titlelist(body: string;aList:TList):
begin
aList.Clear;
//只要用list就出错!
AList.Add(....)
end;

主程序中
for i:=0 to aList.Count-1 do
begin

aList访问。
end;
 
主程序要
aList:=TList.Create;
然后才调用 titlelist(body,alist)
然后主程序使用 aList
主程序用完了aList最后还要 aList.Free
 
我是这么用的,可就是不好使!
 
不会吧,那可能是其他没贴出的代码造成的影响。比如,你add到aList里面的对象不能是局部的,
也不能马上就释放掉,因为后面还要用的
 
pipi.我把代码发给你,你帮我改改可以吗?谢谢!
给我个mail,好吗?
 
接受答案了.
 
后退
顶部