Exercícios sobre pilha

Exercícios sobre pilha

por José Coelho de Pina -
Número de respostas: 2

Um exercício para começar.


Qual o erro na função a seguir?

CelPixel* 
inserir(CelPixel *l, int a, int b)
{
  CelPixel novo;
  novo.x = a;
  novo.y = b;
  novo.prox = l;
  return &novo;
}
Em resposta à José Coelho de Pina

Re: Exercícios sobre pilha

por Carlos Augusto Motta de Lima -

Talvez seja a variável 'novo', que é local, e, por mais que se retorne o endereço dela, ela vai deixar de existir ao fim da função. Uma alternativa seria declarar um ponteiro 'CelPixel *novo' e alocar a memória necessária, retornando 'novo', i.e. o endereço da célula. To viajando? perplexo

Em resposta à Carlos Augusto Motta de Lima

Re: Exercícios sobre pilha

por José Coelho de Pina -

Talvez seja a variável 'novo', que é local, e, por mais que se retorne o endereço dela, ela vai deixar de existir ao fim da função.

É isso ai!

A variável automática novo será alocada na pilha de execução do nosso programa,
junto com as variáveis l, a e b e o endereço de retorno para a função
que por ventura tenha chamado a inserir.
Assim, que a função inserir terminar de ser executada ela devolverá o endereço
da variável novo e retornará do ponto que que foi chamada.
O problema é que a área ocupada por novo passa a ser considerada livre depois
do final da função e poderá ser utilizada para outros fins por funções que por
ventura sejam chamadas pelo nosso programa.