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