Linguagem C Hi-Fan - Estrutura de Dados e Armazenamento Dinâmico (6)

1. Para salvar uma quantidade variável de dados, uma lista vinculada pode ser usada.
2. Uma lista vinculada é um tipo de dados abstrato que pode armazenar vários tipos de dados.
3. A estrutura recursiva deve ter um nome.A linguagem C não permite o uso de typedef para declará-la.
4. Dado um ponteiro para outra estrutura, você pode alterar o ponteiro para uma estrutura definida recursivamente: A linguagem C precisa saber o tamanho específico da estrutura na memória. Se ela se copiar recursivamente na estrutura, então dois pedaços de dados serão será diferente.
5. A pilha é usada para salvar variáveis ​​locais. Para realizar o armazenamento dinâmico, o heap precisa ser usado. Pense em uma pilha como um armário.
6. Heap: Use a função malloc() (alocação de memória), ela retornará um ponteiro.
7. A memória heap precisa solicitar continuamente espaço heap, o que pode causar vazamentos de memória. Para evitar esta situação, você precisa usar
a função free() para liberar o espaço
. 8. malloc() geralmente precisa receber um total de parâmetros, mas não sabemos o número exato de caracteres, então precisamos usá-lo com o operador sizeof. malloc retorna um ponteiro universal, um ponteiro do tipo void*.

island *p = malloc(sizeof(island));
free(p);

9. A função strdup() sempre cria espaço no heap e pode copiar strings para o heap.

char *copy = strdup(s);

10. O que é "coleta de lixo":
Algumas linguagens rastreiam os dados alocados no heap e os liberam quando não são mais usados.
11. O operador sizeof informa quanto espaço a estrutura total requer.
12. Em um programa grande e complexo é muito difícil encontrar erros. Você pode usar a ferramenta valgrind, que é usada no sistema operacional Linux. Ele monitora os dados alocados no heap por falso malloc().
13. Para adicionar informações de depuração ao arquivo executável, você precisa adicionar a opção -g e recompilar o código-fonte.

gcc -g spies.c -o spies

14. Como o valgrind intercepta malloc() e free()?
malloc() e free() estão incluídos na biblioteca padrão C, e valgrind possui uma biblioteca com seu próprio malloc() e free(). Ao executar um programa com valgrind, o programa usará as funções valgrind em vez do padrão C funções na biblioteca.
15. Por que o compilador não inclui informações de depuração por padrão ao compilar o código?
Como as informações de depuração aumentarão o arquivo executável, também poderão tornar o programa mais lento.

Acho que você gosta

Origin blog.csdn.net/weixin_46504000/article/details/129245158
Recomendado
Clasificación