Programação em C: Raio-X na Memória RAM

Tempo de leitura: 1 minuto

Se você tem curiosidade de saber como os dados são armazenados na memória RAM do computador, o vídeo de hoje é pra você.

Este é um conhecimento que muitas vezes é ignorado por quem estuda programação, mas que eu considero extremamente necessário.

A Memória RAM é um dos componentes da nossa dupla dinâmica, e é um dos elementos com quem a gente mais interage na nossa vida de programador.

Independente da linguagem de programação que você for aprender, entender o mecanismo usado pelo computador pra guardar os dados na memória RAM irá te ajudar a progredir mais rápido.

No post passado eu mostrei rapidamente como declarar variáveis (Gavetas!) e mudar seus conteúdos.

No vídeo de hoje você vai entender como que estes dados vão se acomodando (alocando) internamente na memória RAM conforme a gente vai manipulando as variáveis dentro do nosso programa.

De quebra você já vai entender de forma resumida o que são os famosos (e tão temidos) “ponteiros” em linguagem C.

E aí? Curtiu? Deixe um comentário aqui em baixo pra eu saber se esse tipo de conteúdo é relevante para você.

Abraço!

Summary
Programação em C: Raio-X na Memória RAM
Article Name
Programação em C: Raio-X na Memória RAM
Description
Aqui você verá como variáveis/dados são armazenados na memória conforme desenvolvemos nosso programa em linguagem C. Um verdadeiro Raio-x na memória RAM.
Author
Publisher Name
Tiago Salem
Publisher Logo
  • Zé Doreto

    Muito bom. Obrigado pelas aulas.

  • Kallel Albuquerque

    Boa noite,
    Tiago.

    Muito boa sua explicação! Merecia um poste sobre representação numérica e conversões de base, pois é um fundamento importantíssimo. Após assistir esse belo post e ver essa imagem cheio de hexadecimais, me despertou uma curiosidade. Você poderia me indicar uma ferramenta para acessar a memória e interpretar seus hexadecimais no bash?

    • Oi Kallel, boa noite!
      Obrigado pelo comentário. Anotei sua sugestão. Você tem razão com relação a conversão de base. Vou tentar preparar algum conteúdo sobre isso.

      Você pode usar este projeto aqui: https://github.com/hajzer/bash-memory-dump
      É um shell script que você passa o PID de um determinado processo e ele salva no disco um dump da memória utilizada por ele. Depois você pode usar um “hexdump -C arquivo.dump” para analisar o conteúdo.

      Abraço!

  • Achei boa a explicação sobre ponteiros, mostrando o endereçamento de memória fica mais fácil, se tivesse mais exemplos, acho que ficaria melhor, as vezes a gente estuda a teoria e quando chega na prática, da aquele estalo e HUM ENTENDI, funciona comigo continue o bom trabalho.

    • Olá!
      Obrigado pelo comentário! É verdade. Com alguns exemplos ficaria mais fácil. Vou tentar incluir alguns exemplos no próximo vídeo, onde pretendo explicar o conceito de funções e bibliotecas, e então ficará mais simples de mostrar na prática como os ponteiros funcionam.
      Agradeço o feedback.
      Abraço!

  • Felipe dos Santos

    Olá Tiago, Tudo bem?

    Primeiramente parabéns pelo post. Uma explicação simples de fácil entendimento sobre alocação de memoria e sobre os ponteiros. Já aviam comentado comigo sobre esse tal de ponteiro que seria um “bicho de 7 cabeças”, porem, a forma que você explicou ficou muito fácil a compreensão do mesmo. Adoro sua didática, simples porem eficaz.

    • Fala Felipe! tudo beleza e aí?

      Muito obrigado! Na verdade o objetivo do post inicialmente não era explicar ponteiros. Este é um assunto que acabou surgindo durante a explicação e resolvi manter no vídeo. Há bastante coisa para ser tratada, mas como conteúdo introdutório já é suficiente. Acho que é bom ir se acostumando com o conceito desde o começo. 🙂

      Abraço!

  • Ed B Alves

    Show de bola Tiago, esperando as próximas aulas.

  • Mauro Marssola

    Olá Tiago, tudo bem?
    Cara, realmente muito boa essa aula.
    E posso dizer que aprender C foi uma das melhores coisas que eu fiz… Entender como funciona o armazenamento ajuda muito a não gastar memória à toa.

    Estou trabalhando em um projeto onde tive que aprender C, e em pouco tempo consegui avançar no desenvolvimento e lançamos a versão Beta (http://doc.logsquid.com).

    Agora estou estudando C++, e apesar de não ser um requisito para aprender C++, achei interessante começar com o C. Vejo que se tivesse partido para C++ direto, iria demorar um pouco mais para entender algumas coisas.

    Abraços

    • Fala Mauro!
      Que bom que curtiu!

      Concordo plenamente sobre aprender C antes de C++. Como você disse: na prática não precisaria, mas ajuda muito.

      Muito bacana o seu projeto. Dei uma olhada rápida no código e achei muito profissional! Parabéns!
      Eu ainda lembro da época em que a gente tinha que fazer shell scripts pra fazer parsing do log do squid hehe

      Abraço!

      • Mauro Marssola

        Opa, valeu pelo elogio… Significa muito vindo de um programador experiente. hehehe

        Verdade cara, fazer scripts era muito bom mesmo… Era muito bom utilizar o SARG também…
        Eu consegui criar desse modo estudando um pouco o código do Zabbix, para o conceito de Agente e Servidor… o Tail também foi uma ferramenta que olhei o código para fazer com que o Agente conseguisse monitorar a entrada de log’s e fazer a leitura deles…

        Uma boa recomendação para quem está estudando C é olhar o código fonte dos programas base do S.O do projeto GNU. Da para aprender muita coisa.

        Abraços!

        • Pra te ser sincero eu nunca olhei os códigos da GNU. Talvez uma ou outra coisa. Qualquer hora vou dar uma olhada lá só de curioso. 🙂

          Abraço!

  • Luis Cafori

    Fala Tiago!
    Excelente aula como sempre, um pouco mais densa porém com sua didática fica mais tranquila. Já havia escutado sobre esse ponteiro, agora tenho uma ideia do que é, creio que nas próximas aulas você vai deixando mais claro.
    Agradeço por mais essa aula.
    Abraço.

    • E aí, Luis! Tudo tranquilo?
      Com certeza! Nas próximas aulas, em que a gente for usar na prática os ponteiros, ficará mais claro de como a coisa funciona. Como eu falei pro Felipe aqui nos comentários, o objetivo do post não era falar sobre ponteiros, mas o assunto acabou surgindo naturalmente por ser um tema relacionado. Com certeza haverá uma aula mais específica destinada somente para tratar ponteiros no futuro.

      Um Abraço!

  • Jose Avelar

    Olá Tiago.
    Gostei do seu post, foi muito boa a sua explicação. Não tinha noção de como as variáveis são armazenadas na memória RAM e entendi como o ponteiro é importante na memória RAM. Parabéns. Abraço.

    • Excelente, Jose!
      Obrigado pelo feedback. Bom saber que os posts estão ajudando.
      Abraço!