Delphi动态分配指针长度

要点:

1.GetMem函数是分配内存,第二个参数为分配内存的字节长度

2.MyPoint1增加之后,如果需要释放MyPoint1数组,就必须在之前定义MyPoint2保存MyPoint1,用来FreeMem

3.指针释放之后,内存残留的数据,如果没有被其他地方修改,还是可以读出来的!

 

program MyPoint;  //指针详解
{$APPTYPE CONSOLE}
uses
  SysUtils,windows,Generics.Collections ;

{动态分配指针长度}
procedure MyFunc4();
var
  MyPoint1, MyPoint2 : ^integer;//2个指针
  I : integer;
begin
  GetMem(MyPoint1, sizeof(integer) * 5); //MyPoint1分配5个interge的大小
  MyPoint2 := MyPoint1; //保留原始指针位置
  for I := 0 to 5 do //遍历
  begin
    MyPoint1^ := I;
    Writeln('我遍历的第:',I,'次指针内容为:',MyPoint1^);
    Inc(MyPoint1);    //自加1
  end;
  FreeMem(MyPoint2);//MyPoint2的作用就在于此,保存和释放MyPoint1开辟的空间
  Inc(MyPoint2);
  Inc(MyPoint2);  //自加2
  Writeln(MyPoint2^);//读出来的应该是内存残留的数据
end;

{main主函数}
begin
 MyFunc4();
 Readln;//回车退出
end.


 

posted @ 2013-10-26 22:35  GOD攀  阅读(438)  评论(0编辑  收藏  举报