No contexto do .NET, assinale a alternativa correta.
AQuando se trabalha com código gerenciado (managed code), a responsabilidade do gerenciamento de memória é do ambiente de runtime.
BArquivos binários resultantes de compilação para CIL (Common Intermediate Language) são considerados código não gerenciado (unmanaged code).
CA compilação JIT realizada pelo CLR necessita do código-fonte do programa na linguagem de alto nível original na qual foi escrito (C#, Visual Basic etc.).
DArquivos binários resultantes de compilação para CIL (Common Intermediate Language) correspondem a bytecode Java, podendo ser executados diretamente por uma JVM.
ECada linguagem de alto nível suportada pelo .NET (C#, Visual Basic etc.) possui sua própria CIL (Common Intermediate Language) correspondente, sendo diferentes entre si.
Revelar gabarito e comentário▾
GabaritoA — Quando se trabalha com código gerenciado (managed code), a responsabilidade do gerenciamento de memória é do ambiente de runtime.
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”.
.NET: Código Gerenciado, CIL e Compilação JIT
Gabarito: letra A. No .NET, código gerenciado (managed code) é aquele cuja execução é supervisionada pelo runtime (CLR – Common Language Runtime), que assume a responsabilidade pelo gerenciamento de memória, segurança e tratamento de exceções, diferentemente do código não gerenciado, onde o próprio desenvolvedor controla a memória.
A banca testa o conhecimento dos componentes fundamentais da plataforma .NET, especialmente a distinção entre código gerenciado e não gerenciado, o papel da CIL (Common Intermediate Language) e o processo de compilação JIT. O erro típico é associar CIL a bytecode Java ou achar que cada linguagem tem sua própria CIL.
Característica
Código Gerenciado (Managed Code)
Código Não Gerenciado (Unmanaged Code)
Gerenciamento de memória
Responsabilidade do CLR (Garbage Collection)
Responsabilidade do desenvolvedor
Execução
Supervisionada pelo CLR
Executado fora do controle do CLR
Formato de compilação
Compilado para CIL (MSIL)
Compilado diretamente para código de máquina
Exemplo
C#, VB.NET
C++ compilado nativamente
1Código-fonte (C#, VB)
2Compilador → CIL
3Assembly (CIL + metadados)
4CLR carrega assembly
5JIT → código nativo
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
Conforme o conteúdo de apoio, o CLR é o motor de execução que gerencia memória (Garbage Collection), segurança, tratamento de exceções e execução de threads. O código compilado para CIL (ou MSIL) é executado pelo CLR, e todo esse ambiente de runtime é que cuida da alocação e liberação de memória. Portanto, a afirmação está correta.
O CLR (Common Language Runtime) é o motor de execução. Gerencia memória (Garbage Collection), segurança, tratamento de exceções e execução de threads.
Alternativa B — ❌ Incorreta
Arquivos binários resultantes da compilação para CIL são código gerenciado, não não gerenciado. O código não gerenciado (unmanaged code) é aquele executado fora do controle do CLR, como código C++ compilado diretamente para código de máquina. A CIL é o formato intermediário que será compilado JIT para código nativo pelo CLR, caracterizando-o como gerenciado.
Alternativa C — ❌ Incorreta
A compilação JIT (Just-In-Time) é feita a partir do código CIL (ou MSIL), e não do código-fonte original. O fluxo é: código-fonte (C#, VB.NET) → compilador → CIL → (em execução) JIT → código nativo. O CLR carrega o assembly contendo CIL e, no momento da execução, o JIT traduz esse CIL para código de máquina. Nunca o código-fonte original é utilizado nesse processo.
Alternativa D — ❌ Incorreta
A CIL do .NET não é bytecode Java e não pode ser executada por uma JVM (Java Virtual Machine). Cada plataforma tem seu próprio formato intermediário: o .NET usa CIL e o Java usa bytecode (arquivos .class). Ambos são conceitos análogos, mas incompatíveis. A JVM executa bytecode Java, não CIL. Para executar código .NET, é necessário o CLR.
Alternativa E — ❌ Incorreta
Todas as linguagens de alto nível suportadas pelo .NET (C#, Visual Basic, F#, C++/CLI) compartilham a mesma CIL. O CTS (Common Type System) garante que tipos sejam compatíveis entre linguagens. A CIL é comum e padronizada; o compilador de cada linguagem traduz seu código-fonte para essa mesma CIL. Se cada linguagem tivesse sua própria CIL, a interoperabilidade entre elas não seria possível.
PEGA ESSA DICA!
Para fixar: Código fonte → CIL (comum) → JIT → nativo. Lembre-se: CIL é o intermediário universal; código gerenciado depende do CLR; código não gerenciado (ex.: legacy C++) foge desse controle.