mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 17:39:20 +02:00
+ Delphi-style getmem and freemem
This commit is contained in:
parent
926a6c2d3e
commit
2a851006a5
@ -63,6 +63,11 @@ unit objpas;
|
|||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
|
|
||||||
|
Procedure Getmem(Var p:pointer;Size:Longint);
|
||||||
|
Procedure Freemem(Var p:pointer;Size:Longint);
|
||||||
|
Procedure Freemem(Var p:pointer);
|
||||||
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
{****************************************************************************
|
{****************************************************************************
|
||||||
@ -159,6 +164,56 @@ begin
|
|||||||
paramstr:='';
|
paramstr:='';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ ---------------------------------------------------------------------
|
||||||
|
Delphi-Style memory management
|
||||||
|
---------------------------------------------------------------------}
|
||||||
|
|
||||||
|
Type PLongint = ^Longint;
|
||||||
|
|
||||||
|
|
||||||
|
Procedure Getmem(Var p:pointer;Size:Longint);
|
||||||
|
|
||||||
|
begin
|
||||||
|
SysGetmem(P,Size+SizeOf(Longint));
|
||||||
|
PLongint(P)^:=Size;
|
||||||
|
Inc(P,SizeOf(Longint));
|
||||||
|
end;
|
||||||
|
|
||||||
|
Procedure DummyFreemem(Var p:pointer;Size:Longint);
|
||||||
|
begin
|
||||||
|
FreeMem(P);
|
||||||
|
end;
|
||||||
|
|
||||||
|
Procedure Freemem(Var p:pointer;Size:Longint);
|
||||||
|
|
||||||
|
begin
|
||||||
|
Freemem(P);
|
||||||
|
end;
|
||||||
|
|
||||||
|
Procedure Freemem(Var p:pointer);
|
||||||
|
|
||||||
|
begin
|
||||||
|
Dec(P,SizeOf(Longint));
|
||||||
|
SysFreemem(P,Plongint(P)^);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
Var OldMM,NEWMM : TmemoryManager;
|
||||||
|
|
||||||
|
Procedure InitMemoryManager;
|
||||||
|
|
||||||
|
begin
|
||||||
|
GetMemoryManager(OldMM);
|
||||||
|
NewMM.FreeMem:=@DummyFreeMem;
|
||||||
|
NewMM.GetMem:=@GetMem;
|
||||||
|
SetMemoryManager(NewMM);
|
||||||
|
end;
|
||||||
|
|
||||||
|
Procedure ResetMemoryManager;
|
||||||
|
begin
|
||||||
|
SetMemoryManager(OldMM);
|
||||||
|
end;
|
||||||
|
|
||||||
{$IFDEF HasResourceStrings}
|
{$IFDEF HasResourceStrings}
|
||||||
|
|
||||||
{ ---------------------------------------------------------------------
|
{ ---------------------------------------------------------------------
|
||||||
@ -228,16 +283,24 @@ begin
|
|||||||
With ResRec[i] do
|
With ResRec[i] do
|
||||||
CurrentValue:=DefaultValue;
|
CurrentValue:=DefaultValue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Initialization
|
|
||||||
ResetResourceTables;
|
|
||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
|
|
||||||
|
Initialization
|
||||||
|
{$IFDEF HasResourceStrings}
|
||||||
|
ResetResourceTables;
|
||||||
|
{$endif}
|
||||||
|
InitMemoryManager;
|
||||||
|
finalization
|
||||||
|
ResetMemoryManager;
|
||||||
end.
|
end.
|
||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.29 1999-07-23 23:13:54 peter
|
Revision 1.30 1999-08-15 18:56:13 michael
|
||||||
|
+ Delphi-style getmem and freemem
|
||||||
|
|
||||||
|
Revision 1.29 1999/07/23 23:13:54 peter
|
||||||
* array[cardinal] is buggy, use array[word]
|
* array[cardinal] is buggy, use array[word]
|
||||||
* small fix in getresourcestring
|
* small fix in getresourcestring
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user