OSDN Git Service

あまりにメモリがらみで不具合が出るので、メモリマネージャをとりかえてみるテスト。
authorC.Ponapalt <ponapalt@shillest.net>
Fri, 10 Dec 2004 14:31:54 +0000 (14:31 +0000)
committerC.Ponapalt <ponapalt@shillest.net>
Fri, 10 Dec 2004 14:31:54 +0000 (14:31 +0000)
2000/XP/2003では高速になり、9x/NT4では現状より遅くなりますが、
これで安定するようなら良いかなぁと思います。

bottleclient/SimpleMemoryManager.pas [new file with mode: 0644]

diff --git a/bottleclient/SimpleMemoryManager.pas b/bottleclient/SimpleMemoryManager.pas
new file mode 100644 (file)
index 0000000..3e4d926
--- /dev/null
@@ -0,0 +1,46 @@
+(* \95K\82¸\8dÅ\8f\89\82Éuses\82·\82é\82±\82Æ\81I *)
+
+unit SimpleMemoryManager;
+
+interface
+
+uses Windows, SysUtils;
+
+implementation
+
+var
+  hProcessHeap: Cardinal;
+  OldMemMgr: TMemoryManager;
+
+function NewGetMem(Size: Integer): Pointer;
+begin
+  Result := HeapAlloc(hProcessHeap,0,Size);
+end;
+
+function NewFreeMem(P: Pointer): Integer;
+begin
+  if HeapFree(hProcessHeap,0,P) then Result := 0
+  else Result := 1;
+end;
+
+function NewReallocMem(P: Pointer; Size: Integer): Pointer;
+begin
+  Result := HeapRealloc(hProcessHeap,0,P,Size);
+end;
+
+const
+  NewMemMgr: TMemoryManager = (
+  GetMem: NewGetMem;
+  FreeMem: NewFreeMem;
+  ReallocMem: NewReallocMem);
+
+initialization
+  hProcessHeap := GetProcessHeap();
+
+  GetMemoryManager(OldMemMgr);
+  SetMemoryManager(NewMemMgr);
+
+finalization
+  SetMemoryManager(OldMemMgr);
+
+end.