Artigo no estilo: Curso
Com conhecimentos avançados nestes temas conseguimos desenvolver formas de armazenamento robustas e que podem ser reaproveitadas em vários projetos de software.
Nesta série de artigos o leitor saberá escolher qual a estrutura de dados mais adequada para determinadas situações, além de aprofundar vários tópicos importantes da linguagem Delphi.
Um dos segredos de termos softwares rápidos com certeza passa pela correta implementação e utilização de estruturas de dados. A forma como os dados estão organizados durante o processamento fazem com que o sistema tenha uma melhor ou pior performance.
O estudo das mais variadas estruturas de dados costuma ser uma das maiores dificuldades para os desenvolvedores. Observa-se principalmente nas universidades os problemas de muitos alunos de compreenderem esta área da Ciência da Computação que é tão importante no desenvolvimento de softwares.
Nos dias atuais, a maioria das pessoas utiliza a agenda de um telefone celular para fazer o gerenciamento de seus contatos, sejam números de telefones ou e-mails. Este simples recurso de armazenar telefones e e-mails envolve duas tarefas importantes.
A primeira é definir como o dado será armazenado na memória, pois é necessário de alguma forma persistir a informação. A segunda tarefa é disponibilizar operações de criação, recuperação, ordenação, alteração e remoção de dados desta agenda.
A primeira tarefa influi muito na performance de qualquer aplicativo, pois quando informações são armazenadas de maneira desorganizada ou incorreta, fica muito mais difícil fazer a manipulação destas informações.
Apesar da importância deste armazenamento de informações, o modo como o sistema persiste os dados deve ficar oculto para o usuário final, pois o que realmente interessa para o usuário são maneiras de fazer operações com a agenda e não conhecer a maneira como estes dados são armazenados e recuperados.
Gerenciamento de Memória
Há três áreas de memória onde as aplicações armazenam dados: global memory, heap e stack. Variáveis globais são armazenadas na memória global (global memory). Esta memória é reservada pela aplicação quando o programa inicia e permanece alocada até que o programa termine sua execução. A memória global é também chamada de data segment.
Quando declaramos uma variável dentro de um método, a memória requerida para armazenar tal variável é alocada numa área denominada Stack. Quando o programa sai do escopo do método, as alocações da Stack são liberadas automaticamente.
A memória Stack é alocada dinamicamente utilizando o conceito de pilha (LIFO – Last In First Out). Em Delphi, a memória Stack é utilizada para:
· Variáveis de rotinas locais (métodos, procedimentos e funções);
· Parâmetros de rotinas e tipos de retorno;
· Chamadas a funções da API do Windows;
· Records;
Não é necessário alocar nem liberar a memória Stack, pois este processo é feito automaticamente. O tamanho da memória Stack é, por padrão, grande o suficiente para os programas em Delphi, sendo assim, muito raramente este tamanho terá que ser alterado.
Variáveis locais não são inicializadas quando declaradas, portanto, uma boa prática é antes de utilizar sua variável, inicializá-la para que você não tenha que se deparar com um valor absurdo.
Devido à estrutura de pilha utilizada pela Stack, o acesso a esta memória é muito rápido, pois apenas algumas poucas operações são realizadas para armazenar e ler o valor de uma variável.
Temos ainda a memória Heap, ela é utilizada para:
· Criar uma instância de uma classe;
· Criar e redimensionar arrays dinâmicos;
· Alocar memória explicitamente, usando GetMem, FreeMem, New e Dispose;
· Utilizar Ansi/Wide/Unicode strings, variants e interfaces (gerenciados automaticamente pelo Delphi);
Os blocos de memória alocados na memória Heap não têm uma ordem lógica de acesso, ou seja, seu acesso é randômico. Por isso que operações realizadas na memória Heap são um pouco mais lentas s ...
Desbloqueie toda a DevMedia
-
+2000 artigos e vídeos
-
+40 trilhas sobre Front-end, Back-end, IA e muito mais
-
+5000 exercícios práticos
-
Mentorias ao vivo individuais