Uma coisa é referenciar um valor já alocado usando um ponteiro. Outra coisa é 
alocar um ponteiro para ser manipulado (receber e ler dados)!

O q vc fez foi apenas atribuir um endereço de memória a um ponteiro. 
Referenciar dados via ponteiro não é a mesma coisa que alocar um ponteiro para 
receber dados.

Quando se referencia um dado através de um ponteiro, vc cria um outro mecanismo 
de alterar os dados daquela variável por meio de um ponteiro. Ou seja, usando o 
exemplo que vc citou, para alterar o conteúdo da variável Valor, vc pode fazer 
assim:

Valor := 10

Ou assim:

P^ := 10; // fazendo isto, vc tb alterar o conteúdo da variável Valor

O uso de New(), Dispose(), GetMem() ou FreeMem() é usado para alocar 
dinamicamente espaço para dados que não possuem, por assim dizer, um tamanho 
pré-estabelecido, ou para usar de forma racional a memória para alocar espaço 
para o que a quantidade de dados que realmente se fizer necessária.

No seu exemplo, a variável Valor possui uma alocação fixa. Se vc quisesse 
alocar essa memória somente quando necessário, para racionalizar o uso de 
memória do seu aplicativo, fazia algo assim:

New(P); // Aloca o ponteiro de inteiro para ser usado

P^ := 10; // O valor referenciado pelo ponteiro é alterado

P^ := P^ * 2;

WriteLn(P^); // Mostra o valor alterado do ponteiro

Dispose(P); // Não precisa mais do ponteiro. Libera-o da memória!

Sds.

 


To: delphi-br@yahoogrupos.com.br
From: andre.alme...@medicator.com.br
Date: Wed, 4 Mar 2009 12:55:33 +0000
Subject: [delphi-br] Duvida sobre ponteiros





Pessoal, estava fazendo uns testes com ponteiros, ai surgiu uma duvida.
eu criei um ponteiro 
P : ^Integer;
que aponta para o endereco da variável
Valor : Integer;

eis minha dúvida.
Eu simplismente fiz 
P := @Valor;
e funcionou. Mas queria saber se é necessario usar new(P) e dispose(P).

Em alguns exemplos que eu vi usava, outros não.

Abraços.









_________________________________________________________________
Conheça o Windows Live Spaces, a rede de relacionamentos do Messenger!
http://www.amigosdomessenger.com.br/

[As partes desta mensagem que não continham texto foram removidas]

Responder a