Você está na página 1de 8

Estrutura de Dados

Alocação Dinâmica
Estrutura de Dados – Alocação
dinâmica

Inicializando uma string



Constantes strings são sequências de caracteres entre aspas duplas
assim como constantes de caracteres são um único caractere entre
aspas simples;

Para inicializar um caractere só é necessário 1 byte mas para
inicializar um array de caracteres é necessário um byte extra para
acomodar um null (\0) no final da sequência;

Ver código 1
Estrutura de Dados – Alocação
dinâmica

Alocando memória em tempo de execução



Nem sempre é possível prever a quantidade de memória que será
necessária até que o programa esteja em execução. Um array, por
exemplo pode ser definido muito pequeno ou muito grande;

As funções de alocação dinâmica de memória da linguagem C são
malloc(), calloc(), realloc() e free().
Estrutura de Dados – Alocação
dinâmica

A função malloc()

Formato:
void *malloc(size_t tamanho)

Recebe como argumento a quantidade de bytes a serem alocados (portanto
um número inteiro sem sinal representado por size_t). Retorna um ponteiro
void que, no caso da linguagem C, é automaticamente convertido no tipo do
lado esquerdo do operador de atribuição. Se for usado o compilador C++ é
preciso fazer o “casting” do retorno para o tipo do ponteiro Retorna um
ponteiro nulo se falha em alocar a memória;

O código exemplo também inclui a função:
size_t strlen(const char *s)

Essa função recebe a variável ponteiro to tipo char que contém a string
(const char *s) e retorna um inteiro sem sinal (size_t) que é a quantidade de
caracteres da string (não conta o null (\0) do fim da string);

Ver código 2
Estrutura de Dados – Alocação
dinâmica

A função free()

Formato:
void free(ponteiro)

A função recebe como argumento o ponteiro que aponta para o bloco
de memória que tem que ser liberado;

Ver código 3 (1/3, 2/3 e 3/3).
Estrutura de Dados – Alocação
dinâmica

A função calloc()

Assim como malloc(), função calloc() também é utilizada para alocar
memória dinamicamente. A diferença é que o espaço de memória é
inicializado com 0 e ela também recebe outro argumento que é o
número de “itens” que serão alocados. Retorna um ponteiro nulo se
falha em alocar a memória;

Ver código 4.
Estrutura de Dados – Alocação
dinâmica

Atividade

(ZHANG, 2000, p. 294) Escreva um programa que solicite ao
usuário que entre com o total de números que ele ou ela quer
alocar. Então, inicialize a memória alocada com inteiros
consecutivos, iniciando com 1. Some todos os inteiros contidos no
bloco de memória e imprima o resultado final na tela.
Estrutura de Dados – Alocação
dinâmica

Bibliografia e referências
KOFFMAN, E. B.; WOLFGANG. Objetos, Abstração, Estruturas de
Dados e Projeto usando C++, LTC, 2008.
ZHANG, T. Teach yourself C in 24 Hours, SAMS, 2000.

Você também pode gostar