Logo Passei Direto

Alocação dinâmica

Ferramentas de estudo

Solved questions

Material
Study with thousands of resources!

Solved questions

Text Material Preview

Alocação dinâmica 
O que e alocacao dinamica de memoria?
a) A memoria e alocada no momento da compilacao do programa.
b) A memoria e alocada apenas no inicio da execucao do programa.
c) A memoria e alocada e liberada durante a execucao do programa, conforme necessario.
d) A memoria e alocada automaticamente pelo sistema operacional sem a intervencao do
programador.
Resposta correta: c) A memoria e alocada e liberada durante a execucao do programa, conforme
necessario.
Explicacao: A alocacao dinamica permite que o programa solicite e libere memoria durante a
execucao, de acordo com suas necessidades, sem depender de uma quantidade fixa de memoria
pre-definida.
Qual das funcoes a seguir e usada para alocar memoria dinamicamente em C?
a) malloc()
b) free()
c) realloc()
d) alloca()
Resposta correta: a) malloc()
Explicacao: A funcao malloc() em C e usada para alocar um bloco de memoria de tamanho
especificado durante a execucao do programa. A funcao retorna um ponteiro para o bloco de
memoria alocado.
O que acontece se a funcao malloc() falhar ao alocar memoria?
a) O ponteiro retornado sera NULL.
b) O programa continua executando normalmente.
c) O sistema operacional reinicia o programa automaticamente.
d) A funcao retorna um valor negativo.
Resposta correta: a) O ponteiro retornado sera NULL.
Explicacao: Se malloc() nao conseguir alocar a memoria solicitada, ela retornara um ponteiro NULL,
indicando que a alocacao falhou.
Qual e o proposito da funcao free() na alocacao dinamica de memoria?
a) Aumentar a quantidade de memoria disponivel no sistema.
b) Liberar a memoria que foi previamente alocada com malloc(), calloc(), ou realloc().
c) Reservar memoria para um novo bloco de dados.
d) Modificar o tamanho de um bloco de memoria alocado.
Resposta correta: b) Liberar a memoria que foi previamente alocada com malloc(), calloc(), ou
realloc().
Explicacao: A funcao free() e utilizada para liberar a memoria que foi alocada dinamicamente,
evitando vazamentos de memoria.
O que e o vazamento de memoria (memory leak)?
a) Quando um ponteiro aponta para uma area de memoria ja liberada.
b) Quando a memoria alocada dinamicamente nao e liberada corretamente, causando o
esgotamento da memoria.
c) Quando o tamanho de um bloco de memoria alocado e excedido.
d) Quando a alocacao de memoria falha, mas o sistema operacional recupera automaticamente a
memoria.
Resposta correta: b) Quando a memoria alocada dinamicamente nao e liberada corretamente,
causando o esgotamento da memoria.
Explicacao: O vazamento de memoria ocorre quando a memoria alocada dinamicamente nao e
liberada com a funcao free(), levando ao desperdicio de recursos e possivel falha no sistema.
Em C, qual e a diferenca entre malloc() e calloc()?
a) malloc() aloca memoria, enquanto calloc() libera memoria.
b) malloc() nao inicializa a memoria alocada, mas calloc() inicializa a memoria a zero.
c) malloc() aloca um bloco continuo de memoria, enquanto calloc() aloca memoria nao-continua.
d) malloc() e usado apenas para alocar arrays, enquanto calloc() e usado para alocar estruturas.
Resposta correta: b) malloc() nao inicializa a memoria alocada, mas calloc() inicializa a memoria a
zero.
Explicacao: A funcao malloc() aloca um bloco de memoria de tamanho especificado, mas nao o
inicializa. Ja a funcao calloc() aloca a memoria e a inicializa com zero.
O que faz a funcao realloc() em C?
a) Aloca memoria adicional, mas nao altera o tamanho da memoria ja alocada.
b) Aloca memoria de forma dinamica e garante que o bloco de memoria alocado seja sempre maior
que o necessario.
c) Redimensiona um bloco de memoria previamente alocado, podendo aumentar ou diminuir seu
tamanho.
d) Libera a memoria alocada dinamicamente e redefine o ponteiro.
Resposta correta: c) Redimensiona um bloco de memoria previamente alocado, podendo aumentar
ou diminuir seu tamanho.
Explicacao: A funcao realloc() permite redimensionar um bloco de memoria que foi previamente
alocado. Se necessario, ela realoca a memoria para um novo bloco e ajusta o tamanho conforme a
solicitacao.
Em que situacao e mais comum utilizar a alocacao dinamica de memoria?
a) Quando o tamanho do dado e conhecido durante a compilacao.
b) Quando o tamanho do dado e desconhecido ou varia durante a execucao do programa.
c) Quando nao e necessario armazenar grandes volumes de dados.
d) Quando a memoria do programa e limitada.
Resposta correta: b) Quando o tamanho do dado e desconhecido ou varia durante a execucao do
programa.
Explicacao: A alocacao dinamica e usada quando nao se sabe o tamanho exato de dados a serem
armazenados ou quando a quantidade de memoria necessaria varia durante a execucao.
Qual a principal desvantagem de usar alocacao dinamica de memoria?
a) O programa pode ter problemas de desempenho devido a sobrecarga de alocacao.
b) Nao e possivel acessar a memoria alocada dinamicamente.
c) A alocacao dinamica exige mais memoria do que a alocacao estatica.
d) A alocacao dinamica pode gerar problemas de vazamento de memoria se nao for gerenciada
corretamente.
Resposta correta: d) A alocacao dinamica pode gerar problemas de vazamento de memoria se nao
for gerenciada corretamente.
Explicacao: A principal desvantagem da alocacao dinamica e que, se nao for gerenciada
corretamente, como no caso de nao liberar a memoria com free(), pode ocorrer o vazamento de
memoria, o que compromete o desempenho do sistema.
Em relacao a alocacao dinamica, qual das alternativas abaixo e verdadeira?
a) A alocacao dinamica ocorre na pilha de memoria.
b) A alocacao dinamica ocorre na heap de memoria, que e uma regiao de memoria gerenciada
manualmente.
c) A alocacao dinamica e feita automaticamente pelo sistema operacional.
d) A alocacao dinamica e sempre mais rapida que a alocacao estatica.
Resposta correta: b) A alocacao dinamica ocorre na heap de memoria, que e uma regiao de
memoria gerenciada manualmente.
Explicacao: A alocacao dinamica acontece na heap, que e uma regiao da memoria onde o
programador tem controle sobre a alocacao e liberacao dos blocos de memoria.
Qual e o impacto do uso de alocacao dinamica em um programa de longo prazo?
a) O uso constante de alocacao dinamica nao tem impacto em programas longos.
b) O uso excessivo de alocacao dinamica pode levar ao esgotamento de recursos de memoria.
c) A alocacao dinamica ajuda a melhorar a performance em todos os casos de programas longos.
d) Programas que usam alocacao dinamica nao necessitam de gerenciamento manual de memoria.
Resposta correta: b) O uso excessivo de alocacao dinamica pode levar ao esgotamento de
recursos de memoria.
Explicacao: Se a alocacao dinamica nao for bem gerida, como em casos de vazamento de
memoria, o programa pode acabar esgotando os recursos de memoria, prejudicando o
desempenho.
Quando e necessario chamar a funcao free() em relacao a alocacao dinamica?
a) Sempre apos a alocacao de memoria com malloc(), calloc() ou realloc().
b) Somente se a alocacao for feita com calloc().
c) Quando o programa atinge o limite de memoria alocada.
d) Nao e necessario liberar a memoria alocada dinamicamente.
Resposta correta: a) Sempre apos a alocacao de memoria com malloc(), calloc() ou realloc().
Explicacao: Apos a alocacao de memoria com malloc(), calloc(), ou realloc(), e essencial liberar
essa memoria com free() para evitar vazamentos de memoria.
Qual das alternativas e uma boa pratica quando se utiliza alocacao dinamica de memoria em C?
a) Sempre inicializar a memoria alocada com valores conhecidos.
b) Utilizar alocacao dinamica apenas quando o tamanho dos dados for pequeno.
c) Evitar o uso de funcoes como malloc() e calloc() para otimizar o desempenho.
d) Alocar memoria de forma estatica para dados que sao frequentemente acessados.
Resposta correta: a) Sempre inicializar a memoria alocada com valores conhecidos.
Explicacao: E uma boa pratica inicializar a memoria alocada dinamicamente para garantir que ela
nao contenha valores indesejados eevitar problemas durante a execucao.
**Qual e o tipo de variavel que e mais apropriada para alocar dinam