tbs0280.pp 711 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. {$mode objfpc}
  2. {$H+}
  3. program memhole;
  4. {$ifdef go32v2}
  5. uses
  6. dpmiexcp;
  7. {$endif go32v2}
  8. type
  9. TMyClass = class
  10. s: String;
  11. end;
  12. plongint = ^longint;
  13. procedure dotest;
  14. var
  15. c: TMyClass;
  16. s : string;
  17. begin
  18. s:='world';
  19. s:='Hallo '+s;
  20. writeln((plongint(s)-4)^);
  21. c := TMyClass.Create;
  22. writeln(longint(c.s));
  23. c.s := Copy('Test', 1, 4);
  24. writeln((plongint(c.s)-4)^);
  25. c.free;
  26. end;
  27. var
  28. membefore : longint;
  29. begin
  30. membefore:=memavail;
  31. writeln(memavail);
  32. dotest;
  33. writeln(memavail);
  34. if membefore<>memavail then
  35. begin
  36. Writeln('Memory hole using ansi strings in classes');
  37. Halt(1);
  38. end
  39. else
  40. Writeln('No memory hole unsing ansi strings in classes');
  41. end.