Tag Archives: C

Implementando malloc() e free() — reduzindo ainda mais o heap

Este post faz parte de uma série sobre como implementar as funções malloc() e free(). No artigo anterior, aprendemos como reutilizar blocos de memória. Foi um grande avanço, mas há muito mais a melhorar. Um exemplo é a redução do tamanho do heap. Quando liberamos o último bloco de memória, movemos o topo do heap […]

Implementando malloc() e free() — reutilizando blocos de memória

Este post faz parte de uma série sobre como implementar as funções malloc() e free(). No artigo anterior, alteramos nossas funções para liberar alguns blocos de memória. Contudo, isto apenas ocorria se os blocos liberados fossem desalocados do mais novo ao mais antigo. Isto não faria muita diferença. Raramente a memória alocada dinamicamente se comporta […]

Implementando malloc() e free() — adicionando metadados aos blocos de memória

Este post faz parte de uma série sobre como implementar as funções malloc() e free(). Anteriormente, fizemos uma implementação são simplória que praticamente não libera memória nenhuma: um ponteiro aponta para o último bloco alocado, o que permite que abfree() o desaloque, mas somente ele. Uma opção melhor é fazer o último bloco apontar para […]

Implementando malloc() e free() — primeiros passos

Já imaginou como as funções malloc() e free() são implementadas? Tive a oportunidade de aprender um pouco sobre isso, é fascinante! Neste post, apresento os conceitos (e implementações) mais básicos.

Rodando testes antes do commit em Mercurial

Como todo mundo, entrei de cabeça na onda dos sistemas de versão distribuídos, como Git. Por várias razões, porém, meu DVCS “do coração” é Mercurial. (Razões as quais pretendo explicar em breve, por sinal). De qualquer forma, vai aí minha primeira dica sobre o Mercurial. Frequentemente, estou consertando um bug em um projeto… $ nano […]

Tratamento de erros em C com goto

Esses dias, começou-se a discutir na lista de discussão da Python Brasil razões para se utilizar exceções. Em um certo momento, um participante reconhecidamente competente comentou o quanto é difícil tratar erros através do retorno de funções, como em C. Quando se tem um algoritmo complexo, cada operação passível de erro implica em uma série […]