13.07.2015 Views

A Linguagem C Introdução a Programação em Linguagem C ...

A Linguagem C Introdução a Programação em Linguagem C ...

A Linguagem C Introdução a Programação em Linguagem C ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

tabela[0] = 100000;tabela[1] = 88;free(vet); //libera o espaço alocado, mas vet continua apontando para o mesmo endereço.vet = NULL; //agora vet aponta para NULLA seguinte figura apresenta a configuração da m<strong>em</strong>ória antes da alocação dos dois vetores. Observe que os ponteirosforam inicializados com NULL, ou seja, endereço 0.Variável Valor Endereçovet 0 100tabela 0 104108Apos a alocação, t<strong>em</strong>-se a seguinte configuração. O ponteiro vet passa a apontar para o endereço 112 e o ponteirotabela para o endereço 124. Observe que o espaço apontado por vet contém lixo, pois ainda não foi inicializado.Variável Valor Endereçovet 112 100tabela 124 104108Lixo 112Lixo 116Lixo 120100000 12488 128132O operador sizeof( tipo ) retorna o número de bytes ocupado pelo tipo (ver tabela de tipos básicos). A funçãomalloc( int size ) aloca size bytes e retorna o endereço inicial da região alocada. Este endereço retornado éatribuído ao ponteiro que passa a apontar para a região alocada. A função free() libera o espaço alocado. Para seusar a função malloc() deve-se incluir a biblioteca stdlib.h.Uma questão curiosa refere-se a situações onde são realizadas diversas alocações consecutivas, como ilustrado noseguinte código.#define TAM 1int main(void){char *a;int i;int novo, velho;a = (char*)malloc(TAM);velho = (int)a;for(i=0; i < 200; i++)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!