Linux x86_64Memória#12
brk
Ajusta diretamente o limite superior (program break) do heap tradicional do processo.
Descrição
Mecanismo original de crescimento de heap do Unix, hoje usado internamente pelo alocador do glibc para alocações pequenas (alocações grandes tipicamente usam `mmap` diretamente). Raramente chamada diretamente por aplicações — use `malloc`/`sbrk(3)`.
Header:
unistd.hman 2Assinatura
int brk(void * addr);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| addr | void * | Novo endereço do program break. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | addrvoid * |
Valor de retorno
A interface crua do kernel retorna o novo program break em sucesso (ou o atual se a chamada falhar); a wrapper de glibc converte isso para a convenção 0/-1 com errno ENOMEM.
Códigos de erro (errno)
- ENOMEM(12)
- Memória insuficiente para completar a operação.