Termos de C
150 termos de C em português. Ponteiros, memória manual e o que acontece perto do hardware.
A
- ABIContrato em nível de binário que define tamanhos de tipos, layout de structs, convenção de chamada e nomes…
- AddressSanitizerDetector de erros de memória embutido no gcc e no clang: ativado com -fsanitize=address, acusa estouro de…
- alinhamento de memóriaRestrição de que certos tipos fiquem em endereços múltiplos de um valor, em geral o próprio tamanho. Acessos…
- allocaFunção não padrão que reserva bytes na stack do chamador, liberados automaticamente quando a função retorna…
- arena allocatorAlocador que reserva um grande bloco e entrega pedaços dele em sequência, sem free individual. Tudo é…
- argumentos de linha de comandoParâmetros opcionais de main, argc e argv, que recebem o que o usuário digitou ao rodar o programa. argc é a…
- aritmética de ponteirosSoma ou subtração de inteiros em ponteiros, em que o deslocamento é multiplicado pelo tamanho do tipo…
- aritmética verificadaMacros ckd_add, ckd_sub e ckd_mul do cabeçalho stdckdint.h (C23) que fazem a operação e informam se houve…
- arquivo de cabeçalhoArquivo .h que reúne declarações de funções, tipos e macros para serem incluídos por vários arquivos .c…
- arraySequência de elementos do mesmo tipo em posições contíguas de memória, com tamanho fixo definido na…
- array de tamanho variávelArray local cujo tamanho é definido em tempo de execução, como int v[n]. Foi introduzido no C99, tornou-se…
- array decayConversão automática do nome de um array em ponteiro para seu primeiro elemento, na maioria das expressões…
- as-if ruleRegra que permite ao compilador transformar o programa como quiser, desde que o comportamento observável…
- assertMacro de assert.h que verifica uma condição em tempo de execução e aborta o programa, mostrando arquivo e…
- atexitFunção que registra outra função para ser chamada automaticamente quando o programa termina normalmente, por…
B
- biblioteca compartilhadaArquivo de código compilado (.so, .dylib ou .dll) carregado em tempo de execução e usado por vários…
- boolTipo lógico de stdbool.h com os valores true e false. Desde o C23, bool, true e false são palavras-chave…
- buffer overflowEscrita além do fim de um bloco de memória reservado, como um array. Corrompe dados vizinhos ou o endereço…
C
- callocFunção que aloca memória para um array de n elementos e a inicializa com zeros. Recebe a contagem e o…
- campo de bitsMembro de struct declarado com largura em bits, como unsigned flag : 1. Permite empacotar várias flags ou…
- castConversão explícita de um valor para outro tipo, escrita com o tipo entre parênteses antes da expressão. Diz…
- charTipo inteiro de um byte que guarda caracteres e pequenos números. Se char tem sinal ou não depende da…
- código de saídaNúmero inteiro devolvido por main ao sistema operacional quando o programa termina. Zero indica sucesso, e…
- colagem de tokensOperador ## que, dentro de uma macro, une dois tokens em um só antes de o resultado ser analisado. Permite…
- compilação condicionalUso de #if, #ifdef, #ifndef, #else e #endif para incluir ou excluir trechos do código conforme macros…
- comportamento definido pela implementaçãoComportamento que o padrão deixa a cargo do compilador, que deve escolher um resultado e documentá-lo…
- comportamento não especificadoCaso em que o padrão admite mais de um resultado válido sem exigir que o compilador documente qual escolheu…
- constQualificador que declara que um objeto não deve ser modificado depois de inicializado. O compilador recusa…
- constexprEspecificador do C23 para objetos cujo valor é uma constante calculada na compilação, usável em tamanho de…
- container_ofMacro idiomática que recupera o ponteiro da struct que contém um membro, a partir do endereço do membro. Usa…
- convenção de chamadaRegras de uma plataforma sobre como argumentos e retorno passam entre funções: em quais registradores ou…
- conversão aritmética usualRegras que levam os operandos de uma operação binária a um tipo comum antes do cálculo. Entre int e…
D
- dangling pointerPonteiro que continua guardando o endereço de um objeto que já deixou de existir, seja por causa de um free…
- data raceSituação em que duas threads acessam a mesma posição de memória ao mesmo tempo, ao menos uma escrevendo, sem…
- declaração antecipadaDeclaração que apresenta o nome de uma struct ou função antes da definição completa, como struct no…
- definição e declaraçãoDeclaração apresenta um nome e seu tipo ao compilador; definição também reserva memória ou fornece o corpo…
- definição provisóriaDeclaração de variável global sem inicializador e sem extern, como int x; no escopo do arquivo. Pode repetir…
- desreferênciaAto de acessar o valor guardado no endereço de um ponteiro, usando o operador *. Permite ler ou escrever o…
- diretiva includeDiretiva #include que copia o conteúdo de outro arquivo para o ponto onde aparece. Com <> busca nos…
- do while zeroIdioma que envolve o corpo de uma macro em do { } while (0), para ela se comportar como um único comando…
- double freeErro de chamar free duas vezes no mesmo bloco. Corrompe as estruturas internas do alocador e pode derrubar o…
E
- efeito colateral em macroProblema em que um argumento de macro com efeito, como i++, é expandido em vários pontos e executado mais de…
- endiannessOrdem em que os bytes de um valor multibyte ficam na memória: little-endian guarda o byte menos…
- enumTipo que define um conjunto de constantes inteiras com nome. Em C, os enumeradores são só valores int, então…
- EOFMacro de stdio.h, inteiro negativo que getchar e fgetc devolvem ao fim da entrada ou em erro. Por isso o…
- errnoVariável de errno.h, local de cada thread, em que funções da biblioteca e do sistema gravam um código…
- especificador de formatoSequência iniciada por % em printf e scanf, como %d, %s e %f, que indica o tipo do argumento correspondente…
- estouro de inteiroResultado fora do intervalo de um int com sinal. Em C isso é comportamento indefinido, não um giro para…
- etapas da compilaçãoFases pelas quais o gcc leva um .c até o executável: pré-processamento, compilação para assembly, montagem…
- externPalavra-chave que declara uma variável ou função definida em outro arquivo, sem reservar memória aqui. O…
F
- fcloseFunção que fecha um arquivo aberto com fopen, descarrega seus buffers pendentes e libera o FILE. Devolve 0…
- fgetsFunção que lê uma linha de um arquivo para um buffer, guardando no máximo n-1 caracteres e sempre terminando…
- FILETipo definido em stdio.h que representa um fluxo de arquivo aberto. Você nunca o cria direto: recebe um…
- flags de avisoOpções do compilador, como -Wall, -Wextra e -Wpedantic, que ativam avisos sobre código suspeito. Em C…
- flexible array memberÚltimo membro de uma struct declarado como array sem tamanho, como char dados[]. Permite alocar a struct e…
- fopenFunção que abre um arquivo pelo nome e pelo modo ("r", "w", "a", com "b" opcional) e devolve um FILE *, ou…
- format string vulnerabilityFalha em que dados controlados pelo usuário são usados como string de formato em printf, permitindo ler ou…
- fread e fwriteFunções que leem e gravam blocos de bytes em um arquivo, recebendo o tamanho do elemento e a quantidade…
- freeFunção da stdlib que devolve ao alocador um bloco obtido com malloc, calloc ou realloc. O ponteiro continua…
- função variádicaFunção declarada com reticências no final, como int soma(int n, ...), que aceita número variável de…
G
- gccColeção de compiladores GNU; o comando gcc compila arquivos C chamando pré-processador, compilador…
- gdbDepurador GNU que executa o programa passo a passo, mostra variáveis e a pilha de chamadas e permite…
- gotoSalto incondicional para um rótulo na mesma função. Apesar da má fama, é o idioma de C para centralizar a…
H
I
- include guardConjunto de #ifndef, #define e #endif no começo e no fim de um cabeçalho, para que seu conteúdo entre só uma…
- inicializador designadoSintaxe do C99 para inicializar membros de struct ou posições de array pelo nome ou índice, como .x = 1 ou…
- inlineSugestão ao compilador para expandir a função no ponto de chamada. Desde o C99, uma função inline sem static…
- inteiros de largura fixaTipos de stdint.h como int32_t e uint8_t, que têm exatamente o número de bits indicado no nome. Dão…
L
- literal compostoExpressão do C99 que cria um objeto sem nome a partir de um tipo e uma lista de valores, como (struct…
- literal de stringTexto entre aspas duplas no código-fonte, guardado em região normalmente somente leitura. Seu tipo é array…
M
- macroNome definido com #define que o pré-processador substitui por um texto antes da compilação. Serve para…
- macro com argumentosMacro que recebe parâmetros, como #define QUAD(x) ((x) * (x)), expandida como texto no lugar da chamada. Não…
- macro variádicaMacro declarada com reticências nos parâmetros, que aceita quantidade variável de argumentos e os acessa por…
- macro XTécnica em que uma lista de itens é definida uma vez como chamadas de uma macro, redefinida para gerar enum…
- macros predefinidasNomes que o compilador define sozinho, como __FILE__, __LINE__ e __DATE__, além do identificador __func__…
- mainFunção onde a execução do programa começa, nas formas int main(void) ou int main(int argc, char *argv[]). O…
- MakefileArquivo de regras lido pelo comando make: descreve alvos, suas dependências e os comandos que os geram…
- mallocFunção da stdlib que reserva um bloco de bytes no heap e devolve um ponteiro para ele, ou NULL se falhar. A…
- máscara de bitsValor inteiro usado com os operadores &, |, ^ e ~ para ligar, desligar, inverter ou testar bits individuais…
- memcpyFunção que copia n bytes de uma origem para um destino sem interpretar o conteúdo. As áreas não podem se…
- memmoveFunção que copia n bytes de uma origem para um destino, funcionando corretamente mesmo se as áreas se…
- memsetFunção que preenche n bytes de uma região com um mesmo valor de byte. É muito usada para zerar buffers e…
- mutexTrava de exclusão mútua (pthread_mutex_t) que garante que só uma thread por vez execute a região crítica…
O
- offsetofMacro de stddef.h que devolve, em bytes, a posição de um membro dentro de uma struct, medida a partir do…
- operador de endereçoOperador unário & que devolve o endereço de memória de uma variável ou elemento. O resultado é um ponteiro…
- operador setaOperador -> que acessa um campo de uma struct através de um ponteiro. A expressão p->x é uma forma mais…
- ordem de memóriaArgumento memory_order das operações atômicas que define quais acessos à memória outras threads podem ver…
P
- padding de structBytes vazios que o compilador insere entre campos de uma struct para respeitar o alinhamento de cada um. Por…
- passagem por valorModelo de passagem de argumentos de C: a função recebe uma cópia de cada argumento, então alterar o…
- ponteiroVariável que guarda o endereço de memória de outro objeto. Em C, serve para passar dados por referência…
- ponteiro de funçãoPonteiro que guarda o endereço de uma função, permitindo chamá-la indiretamente. Em C é a base de callbacks…
- ponteiro nuloPonteiro com o valor especial NULL, que garante não apontar para nenhum objeto válido. Funções o devolvem…
- ponteiro para arrayPonteiro cujo alvo é um array inteiro, declarado como int (*p)[3]. A aritmética nele avança o tamanho do…
- ponteiro para constPonteiro declarado como const T *p: o dado apontado não pode ser alterado por ele, mas o ponteiro pode mudar…
- ponteiro para ponteiroPonteiro cujo valor é o endereço de outro ponteiro, declarado com dois asteriscos. Serve para alterar um…
- ponteiro voidPonteiro genérico, void *, que pode guardar o endereço de qualquer tipo de dado, mas não pode ser…
- ponto de sequênciaPonto da execução, como o fim de uma expressão completa ou os operadores &&, || e ?:, onde os efeitos…
- pré-processadorEtapa que roda antes da compilação e trata as linhas iniciadas com #, como include, define e if. Trabalha só…
- printfFunção de stdio.h que escreve texto formatado na saída padrão, usando especificadores como %d e %s para…
- promoção de inteirosRegra pela qual tipos menores que int, como char e short, são convertidos para int antes de operações…
- protótipo de funçãoDeclaração que informa nome, tipo de retorno e tipos dos parâmetros de uma função antes de ela ser definida…
- pthreadBiblioteca POSIX de threads, usada em C para criar e sincronizar fluxos de execução com pthread_create e…
Q
R
- randFunção de stdlib.h que devolve um inteiro pseudoaleatório entre 0 e RAND_MAX. Sem chamar srand antes, a…
- reallocFunção que muda o tamanho de um bloco alocado, possivelmente movendo-o para outro endereço e copiando o…
- restrictQualificador de ponteiro, introduzido em C99, que promete ao compilador que o objeto apontado só é acessado…
S
- scanfFunção de stdio.h que lê da entrada padrão e converte conforme o formato, gravando nos endereços passados…
- segmentation faultErro em tempo de execução em que o sistema encerra o programa por acesso inválido à memória, como…
- seleção genéricaExpressão do C11, escrita com _Generic, que escolhe uma entre várias expressões conforme o tipo do…
- setjmp e longjmpPar de funções de setjmp.h que salva um ponto de execução e depois salta de volta a ele a partir de qualquer…
- signalFunção de signal.h que registra um tratador para um sinal, como SIGINT ao pressionar Ctrl+C. O tratador roda…
- símbolo fracoSímbolo que o linker aceita ver substituído por outra definição forte de mesmo nome. É extensão do gcc e do…
- size_tTipo inteiro sem sinal definido pelo padrão para tamanhos e contagens, como o resultado de sizeof e o…
- sizeofOperador que devolve, em bytes, o tamanho de um tipo ou de um objeto, resolvido em tempo de compilação…
- snprintfFunção que formata texto como printf, mas escreve em um buffer de tamanho limitado, sempre terminando em…
- stackRegião de memória que guarda variáveis locais, parâmetros e endereços de retorno das chamadas ativas. Cresce…
- stack canaryValor secreto colocado na stack entre os buffers locais e o endereço de retorno. Se um overflow o…
- stack frameBloco da stack criado a cada chamada de função, com parâmetros, variáveis locais e o endereço de retorno. É…
- staticPalavra-chave com dois usos: em variável local, faz o valor persistir entre chamadas; em função ou variável…
- static em parâmetro de arrayForma do C99, como void f(int v[static 10]), em que o programador promete que o ponteiro recebido aponta…
- static_assertVerificação feita em tempo de compilação: static_assert(cond, "msg") falha a compilação se a condição…
- stderrFluxo padrão de erros, declarado em stdio.h junto com stdin e stdout. Mensagens de diagnóstico vão para ele…
- strcmpFunção que compara duas strings byte a byte e devolve zero se são iguais, um valor negativo se a primeira…
- strcpyFunção que copia uma string, incluindo o terminador nulo, para o destino. Não verifica o tamanho do destino…
- strict aliasingRegra segundo a qual um objeto só pode ser acessado por lvalues de tipo compatível ou por char. O compilador…
- string terminada em nuloConvenção em que um texto é um array de char terminado pelo byte zero, '\0'. As funções da biblioteca padrão…
- stringificaçãoOperador # dentro de uma macro com parâmetros, que transforma o argumento em um literal de string. Permite…
- strlenFunção de string.h que devolve o número de bytes de uma string antes do terminador nulo. Percorre a string…
- strncpyFunção que copia no máximo n bytes da origem e preenche o resto com zeros. Se a origem tiver n bytes ou…
- strtokFunção de string.h que divide uma string em pedaços (tokens) separados por delimitadores, alterando a…
- strtolFunção que converte texto em long, informando onde parou e sinalizando erros por errno. É a alternativa…
- structTipo composto que agrupa campos de tipos diferentes sob um único nome, guardados em sequência na memória. É…
- switchEstrutura que compara uma expressão inteira com rótulos case e salta para o correspondente. Sem break, a…
T
- thread localClasse de armazenamento (_Thread_local, ou thread_local no C23) em que cada thread recebe sua própria cópia…
- tipo atômicoTipo declarado com _Atomic ou pelos nomes de stdatomic.h, como atomic_int, cujas operações são indivisíveis…
- tipo opacoTipo declarado no cabeçalho sem mostrar seus campos, normalmente uma struct incompleta usada por ponteiro…
- tipo sem sinalTipo inteiro declarado com unsigned, que só representa valores não negativos e usa todos os bits para a…
- type punningTécnica de reinterpretar os bytes de um objeto como outro tipo, por exemplo ler um float como inteiro. Em C…
- typedefPalavra-chave que cria um novo nome para um tipo existente. É muito usada para evitar escrever struct toda…
- typeofOperador padronizado no C23 que obtém o tipo de uma expressão para declarar variáveis do mesmo tipo. Antes…
U
- UBSanUndefined Behavior Sanitizer, ativado com -fsanitize=undefined, instrumenta o programa para acusar em tempo…
- undefined behaviorSituação em que o padrão C não impõe nenhum requisito ao programa, e o compilador pode gerar qualquer…
- undefined referenceErro do linker que indica que o programa usa uma função ou variável cuja definição não foi encontrada em…
- unidade de traduçãoResultado do pré-processamento de um arquivo .c: o código-fonte com todos os #include e macros já…
- unionTipo composto cujos membros compartilham o mesmo espaço de memória. Ocupa o tamanho do maior membro, e só um…
- use after freeErro de acessar um bloco do heap depois de ele ter sido liberado com free. A memória pode ter sido…
V
- variável de condiçãoPrimitiva (pthread_cond_t) que permite a uma thread dormir até que outra sinalize uma mudança de estado…
- variável não inicializadaVariável local declarada sem valor inicial, cujo conteúdo é indeterminado: lixo que estava na pilha. Globais…
- vazamento de memóriaSituação em que um bloco alocado no heap perde todos os ponteiros que o alcançam sem ter sido liberado. A…
- volatileQualificador que avisa ao compilador que o valor pode mudar fora do fluxo do programa, como em registradores…