home *** CD-ROM | disk | FTP | other *** search
/ Delphi Programming Unleashed / Delphi_Programming_Unleashed_SAMS_Publishing_1995.iso / chap16 / pointer5 / pointer5.dpr < prev    next >
Text File  |  1995-03-20  |  1KB  |  31 lines

  1. program Pointer5;
  2.  
  3. { Program copyright (c) 1995 by Charles Calvert }
  4. { Project Name: POINTER5 }
  5.  
  6. uses
  7.   SysUtils;
  8.   
  9. var
  10.   A: Pointer;
  11.   B: PChar;
  12. begin                     { Open program                   }
  13.   HeapLimit := 0;         { "Turn off" Pascal sub-allocator}
  14.   A := Ptr(DSeg, 0);      { A "fake" pointer to nothing,   }
  15.   B := Ptr($45FF, $10);   { There is no memory allocation! }
  16.   A := nil;               { Set pointer to nil             }
  17.   B := nil;               { Set pointer to nil             }
  18.   New(A);                 { Pointer will STILL equals nil! }
  19.   Dispose(A);             { Does nothing                   }
  20.   GetMem(A, 100);         { Allocate a hundred bytes       }
  21.   GetMem(B, 100);         { Allocate a hundred bytes       }
  22.   StrCopy(B, 'Test data');{ Use the allocation             }
  23.   FreeMem(A, 100);        { Deallocate 100 bytes           }
  24.   A := nil;               { Set pointer to nil             }
  25.   FreeMem(B, 100);        { Deallocate 100 bytes           }
  26.   asm                     { Set pointer to nil (B := nil;) }
  27.     mov word ptr B, 0;    { Zero out offset                }
  28.     mov word ptr B + 2, 0;{ Zero out segment               }
  29.   end;                    { Close ASM block                }
  30. end.                      { Close program                  }
  31.