Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июня!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

АРХИВ ФОРУМА eXeL@B
https://exelab.ru/f/

   

nice Выделение памяти на асм’е Подскажите как мне выделить динамически кусок...


nice Выделение памяти на асм’е Подскажите как мне выделить динамически кусок памяти под переменную на асме?
Вроде Alloc или я путаю?
Gloomy :: push 65535 ; сколько нужно байт памяти
push GMEM_MOVEABLE or GMEM_ZEROINIT
call GlobalAlloc
mov hMemory,eax
push eax
call GlobalLock
mov pMemory,eax

; тут делаешь с памятью что хочешь - пишешь в нее или читаешь по адресу pMemory

; например

; mov esi,OFFSET szSomeString
; mov edi,pMemory
; lodsw
; stosw

push pMemory
call GlobalUnlock
push hMemory
call GlobalFree

Snowbit :: GlobalAlloc - это анахронизм, его оставили только для совместимости.
Лучше всего использовать либо HeapAlloc, либо VirtualAlloc..

Aster!x :: HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, ClipMemorySize);

nice :: Snowbit
Aster!x
пасибо, а как после освобождать? Или с этой АПИ не требется?

SLV :: Вроде VOID ZeroMemory (PVOID Destination,DWORD Length)

Snowbit :: SLV
ZeroMemory - это просто обнуление учатска памяти

nice
Освобождает HeapFree, я вроде когда-то делал так:
hHeap = HeapCreate(HEAP_NO_SERIALIZE, dwInitSize, 0);
lpHeap = HeapAlloc(hHeap, HEAP_ZERO_MEMORY, dwAllocSize);
//using...
HeapFree(hHeap, HEAP_NO_SERIALIZE, lpHeap);

Если освобождать при выделении как у Астерикса, то при вызове HeapFree hHeap нужно получить из GetProcessHeap..

Aster!x :: Освобождать

HeapFree(GetProcessHeap(), 0, lpMem);






   
Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS