a:=Tstringlist.create;
b:=Tstringlist.create;
b:=a;
这样是不是b和a都指向同一内存区域?当b改变时,a也跟着改变,两者的值都是一样?
java中是这样的,DELPHI中是这样吗?
b:=Tstringlist.create;
b:=a;
这样是不是b和a都指向同一内存区域?当b改变时,a也跟着改变,两者的值都是一样?
java中是这样的,DELPHI中是这样吗?
解决方案 »
- 关于怎么利用QUERY提取数据库内字段的内容再进行赋值呢?
- 无法找到程序输入点GetTextExtentPointI(在动态连接库MSDART.DLL)
- @@@@===请大家留步====关于这样的效果, 如何通过 API来处理,
- 请教高手关于数据库锁定的问题
- 关于链表的问题!菜鸟求教
- 如何读取文件夹下的文件
- 怎样将一个Form弹到前面来??
- 我就这几分了,帮帮忙吧:DBGRID的DBGrid的DblClick事件里,怎么判断双击了那个字段
- Intraweb中新生成的窗口
- 如何在listview中实现拖动,各位大虾救命
- 应该选用什么控件?
- 讨论DELPHI+SQLSERVER B/S 网络解决方案
a:=Tstringlist.create;
b:=Tstringlist.create;
b:=a;a 和 b都是变量,变量能够互相赋值吗? 怎能能 2:=1 !!!!!
虽然这样运行时不会出现明显的错误,其实已经发生了内存泄漏!
a,b:TStringList;
a:=TStringList.Create;
b:=a;
这样b,a,才是指向同一块内存。
a,b:TStringList;
a:=TStringList.Create;
b:=a;
这样子b和a就是指向了同一个地方。
a,b:TStringList;
a:=TStringList.Create;
b:=TStringList.Create;
b:=a;
这样子原来的b在内存分配的TStringList就丢失了。而指向了a。
a 和 b都是变量,变量能够互相赋值吗? 怎能能 2:=1 !!!!!
a和b都是指针,当然能互相赋值,只是b分配的内存失去应用造成内存泄漏而已。
b:=TStringList.Create;
b:=a;
是可以的
A和B本质是指针,但这样丢失了B的空间,B被创建了,但已不能访问了,找不到B的地址了,
就是所谓的内存泄漏
你可以用a.sssign(b)不就行了啊。
var a,b:TStringList;
begin
a:=TStringList.Create;
b:= TStringList.Create; try
a.Add('a');
a.Add('b');
a.Add('c');
b.Add('c');
// b:=a; 如果去掉注释就出现内存泄露
b.Assign(a);
ShowMessage(a.Text);
ShowMessage(b.Text);
finally
a.Free;
b.Free;
end;