Imagine que você precisa escrever um código que imprima os números de 10 até 0. Como não é preciso exibir valores negativos, você opta por usar o tipo unsigned (a variável i) num for:

Ao executar o código, ele entra num loop; passa pelo zero diversas vezes e não termina. Qual é o problema? Para entendermos, vamos ver neste post o que é o tipo unsigned e como o wraparound ocorre em C.

Inteiros sem sinal

Todo tipo inteiro representa um intervalo finito (limite) de inteiros definido pela implementação. Inteiro sem sinal pode representar…


Um vazamento de memória (do Inglês memory leak) ocorre quando o programa não libera para o sistema operacional memória que não é mais utilizada. Um problema que surge diretamente do gerenciamento incorreto de alocação de memória dinâmica.

Vazamentos de memória é especialmente comum ao programar em C, pois a linguagem não oferece nenhum recurso de gerenciamento de memória automático. O programador deve manualmente alocar e desalocar a memória que será usada, levando, na maioria das vezes, a falhas no programa.

Neste post, vamos entender como o memory leak ocorre programando em C, seu impacto e como evitar. …


Se você já programou em C, provavelmente já teve seu programa encerrado seguido de uma mensagem como “Falha de segmentação (imagem do núcleo gravada)”. Mas porque isso ocorre? Como essa mensagem é exibida?

Nest post, vamos entender o que é uma falha de segmentação (segmentation fault, em Inglês) e como funciona o mecanismo de interrupção do programa no Linux.

Segmento de memória

No contexto de falha de segmentação, segmento refere-se ao espaço de endereço de memória do programa. Apenas o espaço de memória do programa é legível. Deste espaço, apenas a pilha (stack) e parte do segmento de dados (data segment) são graváveis…


Na computação, uma flag se comporta como um interruptor: informa o seu estado, isto é, se está ligado ou não, para alguma tarefa e também permite alterá-lo. Dessa forma, bit flags são bits em uma unidade qualquer (chamado de campo de bits, bit field) que podem ser manipulados para descrever alguma operação, comportando-se como diversas variáveis booleanas em uma só variável. É um recurso muito utilizado na linguagem de programação C e que provavelmente você já viu.

int fd = open("file.txt", O_CREAT | O_WRONLY);

A função acima faz parte do file control (fcntl.h), ela tenta abrir o arquivo “file.txt” seguindo…


Tudo no computador funciona no nível do bit, do ligado ou desligado, da ausência ou não de energia. Operações de soma, subtração, multiplicação e divisão, são, obviamente, feitas nesse nível; bem como tudo que ocorre em sua máquina. Na tão popular programação de alto nível, geralmente empregada com linguagens como Python, JavaScript e outras, não é comum a utilização de operações bit a bit. …

Gustavo Costa

Um pouco do que mais gosto em bits.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store