Qual é a conexão entre a pilha usada na alocação de memória dinâmica e estrutura de dados? [duplicado]
-
18-09-2019 - |
Pergunta
Duplicate possíveis:
Por que são dois conceitos diferentes, tanto chamado de “pilha”?
Eu pesquisei ao redor, mas não consegue encontrar a resposta para esta pergunta; qual é a conexão entre a pilha usada na alocação de memória dinâmica e estrutura de dados? É a memória organizada na pilha de uma maneira que é semelhante à estrutura dos dados pilha? Se assim for, isso parece muito estranho, uma vez buscar memória deve ser de acesso aleatório AFAIK (ou seja, O (1)), mas encontrar um item de uma pilha não é feito em tempo constante.
Então, isso é apenas uma sobrecarregado significando de pilha, por assim dizer, ou se há algum tipo de ligação?
Solução
Heap é um sinônimo para o que o padrão chama o livre-store. Em contraste com pilhas, que é usado para chamadas de função, e o armazenamento de objectos função-local, montões crescer na direcção oposta (de cima para baixo) em muitas implementações (em oposição a pilhas - que crescem a partir de baixo para cima). Claro, nenhum destes são exigidos pela norma.
A estrutura de dados heap, por outro lado, é completamente diferente - é uma estrutura de árvore especializado com certas propriedades.
É possível que algumas implementações usar a estrutura de dados heap para a gestão livre de loja, de onde o nome pode ter sido derivado. (Veja amigo alocação de memória .)
Outras dicas
Não, a pilha de programa é diferente da estrutura de dados heap. Em outras palavras, nenhuma relação. Esta questão discute a pilha de programa em detalhes.
Não há nenhuma relação, mas admito o nome pode ser confuso. A pilha na memória é uma matriz que o sistema operacional aloca para programas. A pilha é implementada por programas de pesquisa rápida.