Qual é a conexão entre a pilha usada na alocação de memória dinâmica e estrutura de dados? [duplicado]

StackOverflow https://stackoverflow.com/questions/2410683

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top