626275
508 palavras
3 páginas
VariáveisToda variável é uma alocação de uma quantidade de memória, é nesse espaço de memória que está armazenado o conteúdo da variável, internamente uma variável possui um ponteiro, o ponteiro para o sistema operacional é um endereçamento físico de memória, serve para localizar onde está armazenado tal dado.
A declaração de variável em C#:
Tipo nomeDaVariavel;
Deve-se sempre inicializar uma variável: int meuInteiro = 0;
Stack e Heap
O gerenciamento da memória no C# é feito em duas áreas de memória, o Stack e o Heap.
O Stack é uma área bem pequena de memória (alguns KB) e funciona no formato de pilha.
“Pilha: é uma estrutura de dados em que a inserção e a remoção de elementos de uma sequência se faz pela mesma extremidade, geralmente designada por topo da pilha”
Ou seja, o último que entra na pilha é o primeiro que sai (LIFO – Last-In-First-Out).
Qualquer dado inserido na Stack é automaticamente retirado automaticamente após a conclusão do processo que a alocou, isso livra o programador de se preocupar com isso.
Quando a Stack atinge seu tamanho máximo temos um problema muito conhecido como “stack overflow”. Os dados armazenados na Stack são chamados de “Value Types”.
A Heap é uma área de memória bem grande, diferente da Stack que é pequena, seu tamanho muda dinamicamente conforme o uso, a Heap é acessada indiretamente, por meio de referência, por isso chamamos os dados da Heap de “Reference Type”.
Existe um processo chamado Garbage Collector (GC) que é responsável pela limpeza desta área de memória.
O custo de se criar um objeto na Heap é muito maior do que na Stack, sendo assim na área de memória Stack nós temos os Value Types a seguir:
Tipos numéricos (int, long, short etc), ponto flutuante (float, double), decimal, booleanos (true e false) e estruturas definidas pelo usuário (struct).
Na Heap nós temos os Reference Types do tipo: Classes, Interfaces e Delegates.
As características dos tipos alocados em cada uma dessas áreas são as seguintes:
Value Types: