Smart Pointers foi um conceito adicionado no C++11 para reduzir os riscos inerentes ao desenvolvimento utilizando ponteiros, como por exemplo referência cíclica entre atributos. No post de hoje vamos aprender como os Weak Pointers podem resolver esse problema quando utilizando Shared Pointers.
(mais…)Tags: ponteiros
Smart Pointers foi um conceito adicionado no C++11 para reduzir os riscos inerentes ao desenvolvimento utilizando ponteiros, como por exemplo liberar um objeto que ainda precisa ser utilizado. No post de hoje vamos falar sobre Shared Pointers.
(mais…)Smart Pointers foi um conceito adicionado no C++11 para reduzir os riscos inerentes ao desenvolvimento utilizando ponteiros, como por exemplo vazamento de memória. No post de hoje vamos falar sobre Unique Pointers.
(mais…)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…)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…)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…)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…)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.