A,B:TNode;//TNode是一个类
begin
B:=TNode.Create;
对B节点做一些的事情
A := B;
B.Free;
End;
那么A中存放的是不是只是一个指向B的指针,还是A就是B的另外一个副本?
也就是说B释放掉以后,A内的内容是是原来B的内容,或者不是?我感觉A应该是指指针。
可是我在程序中
function TPriorityQueueLink.DeleteMin: TNode;
var
TempCell:PTCell;
begin
TempCell := Head^.Next;
Head^.Next := TempCell^.Next;
result := TempCell^.Node;
Dispose(TempCell);//加不加这句都不会出错
end;
因为我在程序中使用到了result的值,所以奇怪觉得为什么不会出错。难道":="运算法可以对把一个对象赋给另外一个对象?
begin
B:=TNode.Create;
对B节点做一些的事情
A := B;
B.Free;
End;
那么A中存放的是不是只是一个指向B的指针,还是A就是B的另外一个副本?
也就是说B释放掉以后,A内的内容是是原来B的内容,或者不是?我感觉A应该是指指针。
可是我在程序中
function TPriorityQueueLink.DeleteMin: TNode;
var
TempCell:PTCell;
begin
TempCell := Head^.Next;
Head^.Next := TempCell^.Next;
result := TempCell^.Node;
Dispose(TempCell);//加不加这句都不会出错
end;
因为我在程序中使用到了result的值,所以奇怪觉得为什么不会出错。难道":="运算法可以对把一个对象赋给另外一个对象?
解决方案 »
- 禁止窗体拖大拖小怎么设置啊
- Delphi类库中可有像JAVA中的Collection,Set,List, Map 这样的类,是否需要自己实现?谢谢!
- 郁闷,TTreeView 的ImageIndex问题
- 急!急!急!我在DataGrid的一个单元格上修改数据问题
- Access数据库中使用update出错
- 注册表读写小问题并有代码限制应用软件使用时间。
- 请问关于 Delphi ADO 开发应用工程的编译问题....
- 有个想法,大家进来讨论讨论吧
- delphi程序最小化后如何常驻内存执行(在屏幕右下角)?
- 假设有人ping我,如何得到icmp包以及对方的ip?
- delphi处理word,excel表格的问题。
- 问个函数指针的语法问题,请各位哥哥姐姐指教,谢谢
PTCell = ^TCell;
TCell = Record
Node:TNode;//TNode是一个类
Next:PTCell;
end;
顺便问一下,这里为什么不能修改帖子?
则A中存放的只是一个指向B的指针;
B释放了,A只是一个无用的指针了。
A是一个类TNode的实例,A就是一个指针,类的对象都是指针。
Dispose(TempCell);//加不加这句都不会出错
这一句话为什么不出错!
如果你再一次使用Head^.Next.Node,应该会报异常!
Head^.Next := TempCell^.Next;
result := TempCell^.Node;
Dispose(TempCell);//加不加这句都不会出错
result:=Head^.Next.Node;//这里应该就会报无效地址异常了!