Windows Win32Memóriakernel32.dll
VirtualAlloc
Reserva e/ou confirma (commit) uma região de memória virtual no espaço de endereçamento do processo chamador.
Descrição
Equivalente aproximado do `mmap` anônimo do Linux, mas com o conceito adicional de duas fases: memória pode ser 'reservada' (endereços garantidos, mas sem página física associada) e depois 'confirmada' (commit, quando efetivamente passa a contar contra o limite de memória do sistema).
Header:
memoryapi.hDLL: kernel32.dllNative API: NtAllocateVirtualMemoryAssinatura
LPVOID VirtualAlloc(
LPVOID lpAddress,
SIZE_T dwSize,
DWORD flAllocationType,
DWORD flProtect
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| lpAddress | LPVOID | Endereço sugerido, ou NULL para o sistema escolher. |
| dwSize | SIZE_T | Tamanho da região em bytes. |
| flAllocationType | DWORD | MEM_COMMIT, MEM_RESERVE, MEM_RESET, MEM_LARGE_PAGES. |
| flProtect | DWORD | PAGE_READWRITE, PAGE_EXECUTE_READ, PAGE_NOACCESS, etc. |
Valor de retorno
Endereço base da região alocada em sucesso; NULL em erro (consulte GetLastError).
Códigos de erro (GetLastError)
- ERROR_INVALID_PARAMETER(87)
- Parâmetro incorreto.
- ERROR_NOT_ENOUGH_MEMORY(8)
- Memória insuficiente para processar o comando.
- ERROR_COMMITMENT_LIMIT(1455)
- O arquivo de paginação é pequeno demais para completar esta operação.
Relacionadas
Equivalente em Linux x86_64