OberonCore
https://forum.oberoncore.ru/

дескрипторы типов не выгружаются с модулем -> утечка памяти?
https://forum.oberoncore.ru/viewtopic.php?f=2&t=3707
Страница 2 из 2

Автор:  Info21 [ Среда, 07 Декабрь, 2011 19:40 ]
Заголовок сообщения:  Re: дескрипторы типов не выгружаются с модулем -> утечка пам

Trurl писал(а):
Info21 писал(а):
Грузить независимый ББ для каждой задачки?

Наверное, так. Дети - они такие затейники.
Trurl как скажет, так прямо в глаз :)

Автор:  Евгений Темиргалеев [ Четверг, 08 Декабрь, 2011 08:35 ]
Заголовок сообщения:  Re: дескрипторы типов не выгружаются с модулем -> утечка пам

Kernel
Код:
   PROCEDURE AllocModMem* (descSize, modSize: INTEGER; VAR descAdr, modAdr: INTEGER);
      VAR res: INTEGER;
   BEGIN
      descAdr := WinApi.VirtualAlloc(0, descSize, {12, 13}, {6});   (* reserve & commit; exec, read, write *)
      IF descAdr # 0 THEN
         modAdr := WinApi.VirtualAlloc(0, modSize, {12, 13}, {6});   (* reserve & commit; exec, read, write *)
         IF modAdr # 0 THEN INC(used, descSize + modSize)
         ELSE res := WinApi.VirtualFree(descAdr, 0, {15}); descAdr := 0
         END
      ELSE modAdr := 0
      END
   END AllocModMem;

   PROCEDURE DeallocModMem* (descSize, modSize, descAdr, modAdr: INTEGER);
      VAR res: INTEGER;
   BEGIN
      DEC(used, descSize + modSize);
      res := WinApi.VirtualFree(descAdr, 0, {15});   (* release *)
      res := WinApi.VirtualFree(modAdr, 0, {15})   (* release *)
   END DeallocModMem;

   PROCEDURE InvalModMem (modSize, modAdr: INTEGER);
      VAR res: INTEGER;
   BEGIN
      DEC(used, modSize);
      res := WinApi.VirtualFree(modAdr, modSize, {14})   (* decommit *)
   END InvalModMem;
AllocModMem используется в StdLoader.ReadModule; DeallocModMem там же при неуспешной загрузке. В Kernel.UnloadMod используется только InvalModMem.

Дальше нужно выткать в http://msdn.microsoft.com/en-us/library ... 85%29.aspx

Страница 2 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/