HeapReAlloc
9/8/2008
Essa função realoca que um bloco de memória de um heap. A memória alocada não é móvel.
Syntax
LPVOID HeapReAlloc(
HANDLE hHeap,
DWORD dwFlags,
LPVOID lpMem,
DWORD dwBytes
);
Parameters
hHeap
[no] Pilha do qual a memória vai ser realocada.Este é um identificador retornado pela função HeapCreate GetProcessHeap ou.
dwFlags
[no] Controláveis aspectos de realocação heap. Especificar qualquer um desses sinalizadores substitui o correspondente sinalizador especificado na flOptions parâmetro quando o heap foi criado usando o HeapCreate função.A seguinte tabela mostra os sinalizadores você pode especificar. Você pode especificar um ou mais desses sinalizadores.
Valor Descrição HEAP_NO_SERIALIZE
Especifica que a exclusão mútua não é usada enquanto HeapReAlloc está acessando o heap.
Fazer não especificar esse sinalizador quando estiver acessando o heap processo.
O sistema pode criar segmentos adicionais dentro processo do aplicativo o que simultaneamente acessar heap de processo.
Este sinalizador será ignorado.
HEAP_REALLOC_IN_PLACE_ONLY
Especifica que podem ser sem movimento quando realocar um bloco memória para uma maior tamanho.
Se este sinalizador não for especificado e a solicitação realocação for para uma maior tamanho, a função pode mover o bloco para uma nova localidade.
Se este sinalizador for especificado e o bloco não pode ser ampliado sem mover, a função falhará, deixando o original inalterado bloco de memória.
HEAP_ZERO_MEMORY
Se a solicitação realocação for para uma maior tamanho, este sinalizador especifica que a região adicional de memória além de original tamanho ser inicializado para zero.
O conteúdo do bloco de memória up to seu original tamanho não são afetados.
lpMem
[no] Ponteiro válido para o bloco de memória que realoca que a função.Esse ponteiro é retornado por uma chamar anterior para o HeapAlloc ou HeapReAlloc função.
dwBytes
[no] Tamanho de bloco de memória de novo, em bytes.Tamanho de uma bloco de memória pode ser aumentado ou diminuído usando essa função.
Return Value
Um ponteiro para bloco de memória alocada indica sucesso. Ponteiros retornados por HeapAlloc e HeapReAlloc São válido ponteiros até que eles são liberados pelo HeapFree.
Chamada GetLastError para informações de erro estendidas get.
Remarks
Se HeapReAlloc for bem-sucedido, ele menos aloca o quantidade de memória solicitada. Se a quantidade alocada for maior do que a quantidade solicitada, o processo poderá usar a quantidade inteira. Para determinar o real tamanho de bloco de realocada, use a função HeapSize.
Se HeapReAlloc falhar, o original memória não é liberada e o original identificador e ponteiro ainda são válido.
Para um bloco de memória alocados pelo livre HeapReAlloc, use a função HeapFree.
Garante a serialização de exclusão mútua quando dois ou mais segmentos tentar alocar simultaneamente ou livre bloqueia a partir de heap mesmo. Há um custo desempenho pequeno, mas ele deve ser usado quando múltiplo alocar segmentos e livre memória a partir de heap mesmo.
Um crítico seção sempre é usada para acessar serializar para um individual heap. Há um crítico seção por heap para proteger acessar para cada heap.
Tentar pegar um crítico seção que não seja pertencente é uma operação caminho rápido que gera pouca sobrecarga. Isso é semelhante a usar o sinalizador HEAP_NO_SERIALIZE se somente um segmento nunca foi acessando um heap específico.
Se houver contenção para o crítico seção e, portanto, o heap, uma nova solicitação segmento para alocar será espaço heap serializar.
Requirements
Header | winbase.h |
Library | coredll.lib |
Windows Embedded CE | Windows CE 1.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |
See Also
Reference
Memory Management Functions
GetProcessHeap
HeapAlloc
HeapCreate
HeapDestroy
HeapFree
HeapSize
SetLastError