Lab C++

Codificação Eficiente

Não basta conhecer a sintaxe, é preciso conhecer a linguagem, saber a melhor forma de fazer.

Tags: c

Usando Socket com C – Parte 1: Servidor

A biblioteca boost::Asio é uma ótima opção para networking no C++. Mas em C o mais popular é o socket mesmo. Vamos aprender algumas tarefas básicas com socket neste, e nos próximos posts.

(mais…)

Declaração de Funções Old School

Pra uma linguagem de programação que nasceu em 1973 e rapidamente ganhou popularidade, falar de Old School significa voltar 40 anos atrás. Em mais de quatro décadas até a linguagem C evoluiu bastante, mas ainda assim existe muita coisa, principalmente em códigos antigos, ou em documentação antiga, que utiliza a sintaxe antiga de declaração de funções.

(mais…)

Parser de Entrada de Dados com scanf

Todo mundo sabe que printf faz escrita de dados, e que scanf faz leitura de dados, mas nem todo mundo sabe usar scanf para fazer parser de entrada de dados. Nest post vamos ensinar a fazer parser de formatos básicos usando scanf.

(mais…)

Funções com Lista Variável de Argumentos

Uma das primeiras funções que a maioria aprende em C é printf, mas pouca gente sabe como definir uma função como printf, que recebe uma quantidade de argumentos que depende do primeiro argumento. Para isso existe um conjunto de funções declaradas no arquivo stdarg.h (ou cstdarg).

(mais…)

Implementando Pilha com Lista Ligada em C

No post de hoje vamos implementar uma pilha usando uma lista ligada em C, ou seja, sem usar classes. O mais importante hoje é demonstrar como implementar apropriadamente uma estrutura de dados e as funções que vão manipular os dados.

No próximo post vamos implementar a mesma pilha usando lista ligada utilizando C++, ou seja, utilizando classes, os dois posts em conjunto servirão como exemplo da importância das estruturas de dados no desenvolvimento de software.

(mais…)

Trace de Alocação em C

Vazamento de memória é uma pequena praga que precisa ser combatido. Em alguns sistemas pode não fazer muita diferença, mas quando o processamento envolve um volume grande de dados, ou quando a memória é restrita, como em sistemas embarcados, por exemplo, é necessário tomar muito cuidado.

Pra facilitar a detecção de vazamento de memória podemos fazer uma pequena biblioteca para localizar cada malloc sem seu devido free.

(mais…)

Alocação de Arrays Multidimensionais

Na linguagem C os arrays multidimensionais, ou matrizes, são alocadas como um único bloco de memória, independente de quantas dimensões tenha o array. Isso implica em algumas situações que pode facilitar o acesso a elementos individuais de forma mais rápida. Saber como os arrays funcionam auxiliam não só na otimização do código, como também na identificação e correção de falhas.

(mais…)

Parser de Campos Utilizando strtok

Uma ótima ferramenta para fazer parser de campos separados por caracter é o strtok. Nesse caso vamos fazer um contador de palavras e um parser básico de CSV. Apesar de ser uma função muito bem documentada tem gente que ainda se enrola um pouco ao usar, então vamos aprender como fazer certo.

(mais…)

Retorno de Ponteiro para Variável Local

Tá aí uma falha que pode causar problemas intermitentes e consequentemente muitas horas de desenvolvimento para corrigi-la. Vamos aprender a identificá-la e como evitar esse problema.

Abertura de Escopo

Tem muito programador C/C++ por aí que não sabe como abrir um escopo novo. Basicamente qualquer par de chaves abre um novo escopo em C/C++, e as variáveis ali declaradas somente tem validade dentro desse escopo. Em tempo de compilação isso serve para determinar a validade de cada variável.

(mais…)

Vazamento de Memória

Já trabalhei em várias equipes, algumas tinham um cuidado extremo com a gestão da alocação de memória, outras não se preocupavam tanto assim. Independente da atitude da equipe é importante saber como evitar vazamentos, e quais as consequências.

Para quem não sabe o que é vazamento de memória: é a manutenção de memória alocada dinamicamente após seu uso de forma que não possa ser recuperada, utilizada ou desalocada. O mesmo pode-se dizer de outros recursos. O programa funciona perfeitamente, porém em algum momento a memória acaba, e aí começam os problemas.

(mais…)