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 писал(а): Грузить независимый ББ для каждой задачки? Наверное, так. Дети - они такие затейники. |
Автор: | Евгений Темиргалеев [ Четверг, 08 Декабрь, 2011 08:35 ] |
Заголовок сообщения: | Re: дескрипторы типов не выгружаются с модулем -> утечка пам |
Kernel Код: PROCEDURE AllocModMem* (descSize, modSize: INTEGER; VAR descAdr, modAdr: INTEGER); AllocModMem используется в StdLoader.ReadModule; DeallocModMem там же при неуспешной загрузке. В Kernel.UnloadMod используется только InvalModMem.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; Дальше нужно выткать в 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/ |