fork download
  1. program ideone;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. uses
  6. HeapTrc;
  7.  
  8. type
  9. TNode = record
  10. Name: String;
  11. SubNodes: array of TNode;
  12. end;
  13.  
  14. function Node(const AName: String): TNode;
  15. begin
  16. Result.Name := AName;
  17. Result.SubNodes := nil;
  18. end;
  19.  
  20. function Node(const AName: String; ASubNodes: array of TNode): TNode;
  21. var
  22. intNodeIdx: Integer;
  23. begin
  24. Result.Name := AName;
  25. SetLength(Result.SubNodes, Length(ASubNodes));
  26.  
  27. for intNodeIdx := 0 to High(ASubNodes) do
  28. Result.SubNodes[intNodeIdx] := ASubNodes[intNodeIdx];
  29. end;
  30.  
  31. var
  32. nodeRoot: TNode;
  33. begin
  34. nodeRoot := Node('Level 1, Root 1',
  35. [
  36. Node('Level 2, Leaf 1'),
  37. Node('Level 2, Leaf 2'),
  38. Node('Level 2, Root 1',
  39. [
  40. Node('Level 3, Leaf 1'),
  41. Node('Level 3, Leaf 2'),
  42. Node('Level 3, Root 1',
  43. [
  44. Node('Level 4, Leaf 1'),
  45. Node('Level 4, Leaf 2')
  46. ])
  47. ]),
  48. Node('Level 2, Leaf 3'),
  49. Node('Level 2, Leaf 4'),
  50. Node('Level 2, Root 2',
  51. [
  52. Node('Level 3, Leaf 1'),
  53. Node('Level 3, Leaf 2')
  54. ])
  55. ]);
  56. end.
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Heap dump by heaptrc unit
4 memory blocks allocated : 136/136
4 memory blocks freed     : 136/136
0 unfreed memory blocks : 0
True heap size : 98304
True free heap : 98304