Respostas:
Presumivelmente, você quer dizer heap do ponto de vista da alocação de memória, não do ponto de vista da estrutura de dados (o termo tem vários significados).
Uma explicação muito simples é que o heap é a parte da memória em que reside a memória alocada dinamicamente (ou seja, a memória alocada via malloc
). A memória alocada do heap permanecerá alocada até que ocorra uma das seguintes situações:
free
dSe todas as referências à memória alocada forem perdidas (por exemplo, você não armazena mais um ponteiro), você tem o que é chamado de vazamento de memória . É aqui que a memória ainda foi alocada, mas você não tem mais como acessá-la. A memória vazada não pode ser recuperada para alocações de memória futuras, mas quando o programa termina, a memória será liberada pelo sistema operacional.
Compare isso com a memória da pilha, que é onde vivem as variáveis locais (aquelas definidas em um método). A memória alocada na pilha geralmente só dura até que a função retorne (existem algumas exceções a isso, por exemplo, variáveis locais estáticas).
Você pode encontrar mais informações sobre o heap neste artigo .
Um heap de memória é um local na memória em que a memória pode ser alocada em acesso aleatório.
Diferentemente da pilha em que a memória é alocada e liberada em uma ordem muito definida, os elementos de dados individuais alocados no heap geralmente são liberados de maneira assíncrona. Qualquer elemento de dado é liberado quando o programa libera explicitamente o ponteiro correspondente, e isso pode resultar em um heap fragmentado. Em oposição, apenas os dados na parte superior (ou na parte inferior, dependendo da maneira como a pilha funciona) podem ser liberados, resultando na liberação do elemento de dados na ordem inversa em que foram alocados.
Heap é apenas uma área em que a memória é alocada ou desalocada sem qualquer ordem. Isso acontece quando se cria um objeto usando o new
operador ou algo semelhante. Isso se opõe à pilha, onde a memória é desalocada na base da primeira a sair pela última vez.
Um heap de memória é uma estrutura comum para armazenar memória alocada dinamicamente. Consulte Dynamic_memory_allocation na wikipedia.
Existem outras estruturas, como piscinas, pilhas e pilhas.
É um pedaço de memória alocado do sistema operacional pelo gerenciador de memória em uso por um processo. As chamadas para malloc()
et alia tiram memória desse heap em vez de precisar lidar diretamente com o sistema operacional.
Você provavelmente quer dizer memória de pilha, não pilha de memória.
A memória heap é essencialmente um grande conjunto de memória (geralmente por processo) do qual o programa em execução pode solicitar partes. Isso geralmente é chamado de alocação dinâmica .
É diferente da pilha, onde "variáveis automáticas" são alocadas. Assim, por exemplo, quando você define em uma função C uma variável de ponteiro, espaço suficiente para armazenar um endereço de memória é alocado na pilha. No entanto, muitas vezes você precisará alocar espaço dinamicamente (com malloc) na pilha e fornecer o endereço onde esse pedaço de memória começa no ponteiro.