var
  F: Pointer; //(全局变量)
implementation
procedure TForm1.Button1Click(Sender: TObject);
var
  Pc: Pchar;
  S: string;
begin
  S := 'A Test';
  Pc := Pointer(S);
  F := Pointer(PC);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
  Edit2.Text := PChar(F);  //可以显示出S的值('A Test')
end;
不是说函数(过程)中的变量一离开函数(过程)范围,
变量内存就会被回收吗?怎么此时还会在内存中存在呢?

解决方案 »

  1.   

    楼上的已经给你回答过了,以前有人问过类似的New和Dispose的问题,我在他的帖子里面很详细的回答他了,你可以找一下那个帖子,因为你的问题和他的问题原理都是一样的
      

  2.   

    那请问“空间已经释放,但还没有分配作其它用途,所以其中的数据还是原来的。”windows如何知道此空间能用呢?有标记吗?
      

  3.   

    是的,这个和windows的文件管理有点不一样,文件管理有目录区,目录区会有很多东东记录文件的位置