Blog C/C++ Sem categoria
Callback em C

Callback é um função que é passada através de uma outra função.

O C realmente é uma linguagem fantástica. Ela permite isso e muito mais.

Podemos implementar um ponteiro atribuindo ele como uma função e simplesmente chama-la.

Vou demonstrar seu uso neste exemplo:

No exemplo acima, temos duas funções:

Chamada1 e Chamada2, ambas executam funções bem simples.

A função exCallBack, tem como parâmetro um ponteiro de função.

Verifique que ao passar a função, usamos o &, pois não passamos a função em si, mas o endereço da mesma.

Espero ter ajudado com este exemplo simples de uso de callback.

Abraço a todos.

Blog C/C++
Exemplo de Ponteiro de Memória em C

Estaremos aqui abordando o uso de ponteiro de memória, neste pequeno exemplo de código.

Vemos aqui 3 variáveis:

  • mensagem
  • pmensagem
  • pmensagem2

Podemos notar, que a primeira é um vetor estático, enquanto as duas seguintes são ponteiros.

O ponteiro trabalha como uma variável numérica, pois armazena o endereço. Desta forma quando referenciamos um ponteiro, não mostramos o valor, mas sim o endereço que ele se encontra.

O C é uma linguagem de tipagem fraca, com isso podemos manipular ponteiros de caracteres, aplicando cálculos matemáticos, como no exemplo acima.

Notemos que ao indicar um ponteiro, podemos apontar qualquer parte do endereço de um segmento de memória, não só o começo. No exemplo acima, pulamos cada vez que lemos a posição 1 byte.

Desta forma podemos ir rolando o ponteiro para a posição que quisermos.

Blog C/C++
Alocação de variável dinâmica

Estaremos abordando como alocar uma variavel dinamica em C.

No exemplo acima, podemos verificar, que existe uma variavel pdinamica. Que é um ponteiro de variável.

Iremos explicar o ponteiro em outro post.

O comando malloc, pega um segmento da memória, e reserva para o ponteiro.

Alocação de memória deve ser usada com muito cuidado, pois seu uso inadvertido, pode causar crash do sistema, ou o que chamamos de memory leak. O memory leak é como o próprio nome diz, quando perdemos o controle das alocações, não removendo a alocação da memória após seu uso.

Na alocação dinâmica, a alocação e desalocação da memória é feita pelo software (programador), se houver uma falha no processo de desalocação aquele segmento de memória ficará inutilizado até que a aplicação feche.

Em situações onde houver rechamada constante de um bloco de instruções que perde memória, o programa irá capturar segmentos de tal volume, que em um dado momento a aplicação ficará sem recursos (memória livre disponível).

O comando free, já faz a liberação da memória, quando apontamos o endereço da memória, dizemos ao Sistema Operacional, que aquele segmento de memória criado no endereço apontado, já pode ser liberado.

Como o sistema operacional já sabe o tamanho criado no momento da alocação, não é necessário identificar o tamanho do segmento.

Sem categoria
Exemplo de alocação estática em C

Apresentarei um exemplo bem simples de alocação estática em C.

Vamos aprender um pouco.

Neste exemplo, acima, declaramos a variável estática.

O que podemos aprender aqui, bem neste exemplo muito simples. Temos 3 aprendizados.

  1. Alocação de variável estática
  2. Carga na memória da variável através do sprintf
  3. Impressão na tela pelo printf.

Espero ter ajudado!

C/C++ Delphi Lazarus Sem categoria
Comandos do GDB

O GDB é acrônimo GNU DeBuger, e é utilizado para depurar aplicações escritas em C, C++, Kylix, Delphi entre outras.

Como realizar a carga do GDB

gdb -d <aplicacao> [source]

Onde Aplicacao é aplicação que se deseja debugar.

source é aonde estão os fontes do projeto.

Recomendação:

Posicione o gdb no local dos fontes, fazendo a chamada da aplicação pelo caminho completo, desta forma, pode ignorar o local (source). ankara escort çankaya escort ankara escort çankaya escort escort ankara çankaya escort escort bayan çankaya istanbul rus escort eryaman escort escort bayan ankara ankara escort kızılay escort istanbul escort ankara escort ankara rus escort escort çankaya ankara escort bayan istanbul rus Escort atasehir Escort beylikduzu Escort Ankara Escort malatya Escort kuşadası Escort gaziantep Escort izmir Escort

Exemplo de código:

Principais comandos GDB

Breakpoint (b)

O comando b adiciona um break point (ponto de debug) para analise, sua sintaxe é bem simples.

b source:linha

Run (r)

O comando r, roda a aplicação, iniciando o debug da mesma.

Kill (k)

O comando k, para a aplicação, finalizando o debug.

Quit (q)

O comando q, sai do debug.

List (l)

O comando l mostra um fragmento do fonte em que esta. Ele usa o fonte que vc apontou no source.

Display

O comando display, mostra o conteúdo de uma variável ou expressão.

O comando p, mostra o conteúdo de uma variável.

Sintaxe:

p [nome_variavel]

Continue (c)

O comando c, vai até o próximo break point.

Next (n)

O comando n, executa o programa até a próxima linha, mas não muda a tela.

Step (s)

O comando s, executa o comando até o próximo linha, mudando a tela.

Step into (si)

O comando si, executa exatamente uma instrução entrando dentro desta, se houver funções internas.

Finish

O comando finish, executa a linha até o final desta.

Info threads

O comando info threads, lista as threads apontando informações das mesmas.

Info breakpoints

O comando info breakpoints ou i break, mostra os breakpoints que adicionei no meu debug durante a execução.

Sintaxe:

i break

mostra lista de breakpoints adicionados no debug
Comando i break

Info args

O comando info args, mostra os argumentos passados pela função que foi chamada.

Exemplo:

info b

comando lista os break points criados.

thread

O comando thread, muda a execução para alguma thread especifica.

Clear

O comando clear, apaga todos os break points ativos.

Delete

O comando delete, apaga o break point criado, deve ser usado o número de identificação deste break point.

Exemplo

delete 1

Deleta o primeiro breakpoint criado

Backtrace (bt)

Mostra a cadeia de chamada de funções

sintaxe:

bt

DIRECTORY

Inclui o caminho dos fontes. (Agradeço ao amigo Felipe Resende pela dica)

Exemplo:

directory=/home/mm/proj01/src

Interface de Fontes

Ativa interface texto de visualização de fontes.

tui [enable] [disable]

MNote2
MNote2 – Salvamento de contexto

Estou escrevendo o salvamento de contexto do projeto MNote2.

No caso, o salvamento, permite saber ao retornar a aplicação, como e quais textos estavam abertos após a reabertura.

Como padrão, salvamento de contexto, sempre será uma classe Set(Nome do pai).

Exemplo Form: Main -> Contexto SetMain.pas

O Arquivo gerado será sempre set<Form>.

Blog Sem categoria
Descobrindo quem esta usando as portas TCP.

Por vezes nos deparamos com portas sendo utilizadas em nosso PC, e não sabemos de verdade quem usa oque.

Vou ensinar agora, como descobrir isso.

Se utilizarmos o comando pelo prompt do windows:

netstat -nao

Teremos a imagem a seguir:

execução do netstat -nao

Perceba que temos 5 informações:

  • Protocolo
  • Endereço local
  • Endereço Externo
  • Estado
  • PID

Neste contexto percebemos que o netstat mostra ao lado do ip:porta, ou seja, sempre mostra a porta do local usada.

A descrição LISTENING, indica que é um serviço que escuta a porta em questão.

Listar aplicações em execução

No linux o pid é muito conhecido e usado, porem no windows, é um pouco mais misterioso.

Iremos tratar, alguns pontos.

No windows quem quer listar os processos que estão em execução, o método mais fácil é o tasklist.

Para pegar apenas o processo correto utilize a seguinte sintaxe:

tasklist | grep -e " 4 "

Desta forma coletará apenas o nro do processo


Matando a aplicação, no windows

Para matar uma aplicação pela console no windows, use o comando tskill, conforme a sintaxe:

tskill <pid>

Segue exemplo:

Blog
Alguns comandos da NVIDIA

Já apresentei em posts anteriores a possibilidade de integração e leitura das informações da GPU NVIDIA.

Através da aplicação nvidia-smi, é possível realizar a leitura das diversas funcionalidades da api da nvidia.

Um exemplo de uso, é descobrir quantas placas de vídeo existem em seu desktop.

O comando a baixo permite isso:

nvidia-smi    --query-gpu=gpu_name, vbios_version --format=csv,noheader

Conforme vemos na imagem abaixo:


A simples adição do parametro -i [nro], permite selecionar qual o device que quer ler a informação.

nvidia-smi    -i 0 --query-gpu=gpu_name, vbios_version --format=csv,noheader  

Conforme figura abaixo:

Mais informações podem ser vistas no link abaixo:

https://developer.download.nvidia.com/compute/DCGM/docs/nvidia-smi-367.38.pdf

Relógio
Leitura de temperatura GPUs

A mudança mais recente na versão 2.3.9 do projeto relógio, esta em ler as informações das placas NVIDIA.

Permitindo a integração além dos modelos da placa de vídeo, como também a temperatura de ambas.

Outro recurso, bem interessante na nova versão é a possibilidade de monitoramento de temperatura, através de gráfico.

Informações de temperatura de forma gráfica

pt_BRPortuguese