Compartilhar via


HeapAlloc

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Essa função aloca um bloco de memória de um heap. A memória alocada não é móvel.

Syntax

LPVOID HeapAlloc(
  HANDLE hHeap,
  DWORD dwFlags,
  DWORD dwBytes
);

Parameters

  • hHeap
    [no] Identificador para o heap da qual a memória será alocada.

    Este parâmetro é um identificador retornado pela função HeapCreate GetProcessHeap ou.

  • dwFlags
    [no] Opções alocação da pilha. Especificar qualquer um desses sinalizadores irá substituir o correspondente sinalizador especificado quando o heap foi criado com HeapCreate.

    A seguinte tabela mostra os sinalizadores você pode especificar. Você pode especificar um ou mais desses sinalizadores.

    Valor Descrição

    HEAP_NO_SERIALIZE

    É ignorado. O heap é sempre serializado.

    HEAP_ZERO_MEMORY

    Especifica que a memória alocada será inicializada para zero. Caso contrário, a memória não está inicializada para zero.

  • dwBytes
    [no] Número de bytes a ser alocada.

    Se o heap especificado pela hHeap parâmetro é um heap nongrowable, dwBytes deve ser menor que 0x7FFF8.

    Você cria um heap nongrowable chamado de HeapCreate função com um diferente de zero valor.

Return Value

Um ponteiro para bloco de memória alocada indica sucesso. Ponteiros retornados por HeapAlloc e são HeapReAlloc válido ponteiros até que eles são liberados pelo HeapFree.

NULL Indica falha. Se a função falhar, ele não chamar SetLastError.

Remarks

Se HeapAlloc 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 alocado, use a função HeapSize.

Para um bloco de memória alocados pelo livre HeapAlloc, use a função HeapFree.

Memória alocada por HeapAlloc Não é móvel. Como a memória não é móvel, o heap pode ficar fragmentado.

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 sempre que 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 alocar espaço heap será serializar.

HeapAlloc(GetProcessHeap(),...) é equivalente a LocalAlloc(...).

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
HeapCreate
HeapDestroy
HeapFree
HeapReAlloc
HeapSize