Cómo usar valgrind para verificar la memoria en el sistema Linux

  
                

Durante el proceso de escritura de código usando el sistema Linux, existe la posibilidad de enviar una pérdida de memoria. Entonces, los usuarios deberían aprender a verificar la memoria, ¿cómo hace Linux para verificar la memoria? En general, use algunas herramientas, este artículo presentará cómo usar valgrind para verificar la memoria en el sistema Linux.

Tome un vistazo al código:

#include "stdlib.h"

#include "stdio.h"

# include "cadena .h》

static void mem_leak1 (void)

{

char * p = malloc (1);

}

Static void mem_leak2 (void)

{

FILE * fp = fopen (" test.txt ", " w ");

}

static void mem_overrun1 (void)

{

char * p = malloc (1);

* (short *) p = 2;

Libre (p);

}

estático void mem_overrun2 (void)

{

char array [5];

strcpy (array, " hello ");

}

void static mem_double_free (void)

{

char * p = malloc (1);

libre (p);

libre (p);

}

void estático mem_use_wild_pointer (void)

{

char * p = (void *) 0x80184800;

* p = 1;

}

void estático mem_free_wild_pointer (void)

{

char * p;

free (p);

}

int main ()

{

mem_leak1 ();

mem_leak2 ();

mem_overrun1 ();

mem_overrun2 ();

mem_double_free ();

//mem_use_wild_pointer ();

mem_free_wild_pointer ();

return 0;

}

Problemas de memoria comunes:

1. Fuga de memoria dinámica;

2. Fuga de recursos, aquí hay un descriptor de archivos;

3. Memoria dinámica fuera de límites;

4. Memoria de matriz fuera de límites;

5. Memoria dinámica doble libre;

6. Utilice el puntero de comodín, es decir, el puntero sin inicializar;

7. Suelte el puntero de comodín, es decir, el puntero sin inicializar;

Cuando el código de muestra es demasiado simple, el sexto caso hace puntero salvaje conducirá directamente al accidente, por lo que en su mayor parte, no hay código de ejemplo real que llamar. Como valgrind solo puede detectar el código que se ejecutó, la sexta condición de error no se informará en un informe posterior. Sin embargo, en proyectos grandes, es posible usar punteros salvajes sin causar bloqueos en el programa. Además, en los 7 casos anteriores, algunos casos son estrictamente hablando y pueden clasificarse en una categoría. Anterior12Página siguiente Total 2 páginas

Copyright © Conocimiento de Windows All Rights Reserved