Lab C++

Codificação Eficiente

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

Tags: qualidade

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…)

70% dos Bugs são de Gerenciamento de Memória

De acordo com uma notíca no ZDNet, uma estatística feita pelo Google indica que 70% das falhas de segurança do Google Chrome estão relacionadas com problemas de gerenciamento de memória. A Microsoft publicou resultados equivalentes em seus produtos.

Em ambos os casos a base de códigos predominante é C e C++, linguagens que não tem mecanismos de gestão de memória, deixando para o desenvolvedor a responsabilidade de gerenciar os ponteiros e as memórias.

Por isso a importância de se conhecer apropriadamente C e C++, e não simplesmente achar que sabendo a sintaxe sabe-se programar. Código de qualidade reduz o retrabalho, aumenta a segurança, e principalmente a estabilidade do programa desenvolvido.

Array Out-of-Bounds

Out-of-bounds pode ser traduzido com fora dos limites, mas a expressão array out-of-bounds significa acessar um array além do seu limite inferior ou superior, outro nome muito popular é array overflow, ou string overflow.

Nas linguagens C/C++ não há checagem de limites para arrays simples, o compilador deixa o programador acessar a memória do jeito que bem entender, e a responsabilidade de não estourar os limites é do próprio programador.

Quando isso acontece o compilador simplesmente começa a acessar a memória contígua à memória alocada para o array, provavelmente outras variáveis.

(mais…)