Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — Quadrix 2025

ProgramaçãoLinguagens de programação
Código
qg594698
Banca
Quadrix
Órgão
CFBio
Ano
2025
Nível
Superior
Cargo
Analista de Desenvolvimento
Em relação às metodologias de desenvolvimento de sistemas e às linguagens de programação utilizadas no desenvolvimento de sistemas, julgue o item seguinte.Em C++, malloc() é uma função que serve fazer a alocação dinâmica de memória.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Alocação dinâmica de memória em C++

Gabarito: C — CERTO. A função malloc() é, de fato, uma função da biblioteca padrão da linguagem C, herdada pelo C++, utilizada para realizar a alocação dinâmica de memória em tempo de execução. A afirmação está correta, pois malloc() aloca um bloco de memória contíguo do tamanho especificado em bytes e retorna um ponteiro para o início desse bloco.

A alocação dinâmica de memória é um conceito fundamental em linguagens de programação de baixo nível, como C e C++. Diferentemente da alocação estática, que ocorre em tempo de compilação e tem tamanho fixo, a alocação dinâmica permite que o programa solicite memória durante sua execução, conforme a necessidade. Isso é essencial para estruturas de dados que crescem ou diminuem dinamicamente, como listas encadeadas, árvores e vetores de tamanho variável.

Em C, a alocação dinâmica é feita principalmente pelas funções malloc(), calloc(), realloc() e free(), todas declaradas no cabeçalho <stdlib.h>. A função malloc() recebe como argumento o número de bytes a serem alocados e retorna um ponteiro do tipo void*, que deve ser convertido para o tipo de ponteiro desejado. Por exemplo, para alocar um vetor de 10 inteiros, o programador escreveria:

int *vetor = (int*) malloc(10 * sizeof(int));

O C++ herdou essas funções da linguagem C, mas também introduziu operadores próprios para alocação dinâmica: new e delete. O operador new aloca memória e chama o construtor da classe, enquanto delete libera a memória e chama o destrutor. Essa é uma diferença crucial: malloc() apenas reserva memória bruta, sem inicializar o objeto, enquanto new inicializa o objeto adequadamente.

A distinção entre malloc() e new é um ponto clássico de cobrança em provas. Enquanto malloc() é uma função que retorna void* e não chama construtores, new é um operador que retorna o tipo correto e chama o construtor. Além disso, malloc() deve ser liberada com free(), enquanto new deve ser liberado com delete. Usar free() em memória alocada com new, ou vice-versa, é um erro grave que pode causar corrupção de memória.

A pegadinha que a banca poderia explorar é a confusão entre malloc() e new, ou a ideia de que malloc() é exclusiva do C e não existe no C++. Na verdade, malloc() é uma função da biblioteca padrão do C que também está disponível no C++ por compatibilidade, embora o uso de new seja recomendado em código C++ moderno.

Guarde a fronteira entre malloc()/free() (funções da biblioteca C, alocam memória bruta) e new/delete (operadores do C++, alocam e inicializam objetos): é exatamente nela que as questões sobre alocação dinâmica em C++ se dividem.

1malloc()/free() (herdado do C)
Função da biblioteca
Aloca memória bruta
Não chama construtor
Retorna void*
2new/delete (operadores C++)
Aloca e inicializa objeto
Chama construtor/destrutor
Retorna tipo correto
3Regra de uso
free() em memória de new
delete em memória de malloc()
Alocação dinâmica em C++
LEVELsoulevel.com.br
Alocação dinâmica em C++: malloc()/free() (herdado do C) (Função da biblioteca, Aloca memória bruta, Não chama construtor, Retorna void*); new/delete (operadores C++) (Aloca e inicializa objeto, Chama construtor/destrutor, Retorna tipo correto); Regra de uso (free() em memória de new, delete em memória de malloc())

Item — ✅ CERTO

A afirmação "Em C++, malloc() é uma função que serve fazer a alocação dinâmica de memória" está correta. A função malloc() é uma função da biblioteca padrão do C, herdada pelo C++, que aloca um bloco de memória contíguo do tamanho especificado em bytes e retorna um ponteiro para o início desse bloco. Ela é uma das principais funções de alocação dinâmica de memória, juntamente com calloc(), realloc() e free(). Embora o C++ ofereça o operador new como alternativa mais segura e orientada a objetos, malloc() continua disponível e funcional na linguagem.

Gabarito: C — CERTO.

Link permanente: /questoes/qg594698