es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo verificar las fugas de memoria en C?

Esta es la primera vez que utilizo asignación de memoria dinámica y no sé cómo verificar las fugas de memoria en mi código.

En general, ¿cómo puedo verificar las fugas de memoria en Visual Studio? No sé cómo rastrear el montón y la pila, así que estoy haciendo esto a ciegas en su mayoría.

Debo mencionar que uso Windows 10 y, por lo que sé, Valgrind no ofrece soporte para W10.

Dictionary* createDic(Dictionary* dics, int* size) {
    Dictionary* temp = NULL;
    //algo de código adicional para las variables que no son tan importantes para la pregunta
    temp = malloc(++*size * sizeof(Dictionary));
    if (temp==NULL)
    {
        printf("\n¡La creación del diccionario ha fallado!");
        *size+=-1;
        freeArray(splitReciever,count);
        return dics;
    }
    for (int i = 0; i < (*size - 1); i++)
    {
        temp[i] = dics[i];
    }
    temp[*size - 1].languages = splitReciever;
    temp[*size - 1].numOfLanguages = count;
    temp[*size - 1].wordList = NULL;
    dics = temp;
    return dics;
}

También me preguntaba si este código funcionaría sin causar fugas de memoria.

Dictionary* createDic(Dictionary* dics, int* size) {
    Dictionary* temp = NULL;
    //algo de código adicional para las variables que no son tan importantes para la pregunta
    temp = realloc(dics , ++*size * sizeof(Dictionary));
    if (temp==NULL)
    {
        printf("\n¡La creación del diccionario ha fallado!");
        *size+=-1;
        freeArray(splitReciever,count);
        return dics;
    }
    temp[*size - 1].languages = splitReciever;
    temp[*size - 1].numOfLanguages = count;
    temp[*size - 1].wordList = NULL;
    dics = temp;
    return dics;
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para verificar las fugas de memoria en Visual Studio, puedes utilizar la herramienta de diagnóstico de memoria incorporada. Primero, abre tu proyecto en Visual Studio y ve al menú Depurar. A partir de ahí, selecciona la opción “Iniciar herramientas de diagnóstico sin depuración”. Esto abrirá una ventana que te permitirá seleccionar la opción de Uso de Memoria. Al hacer clic en “Iniciar”, se ejecutará tu programa y se monitorizará su uso de memoria.

    Una vez que tu programa haya terminado de ejecutarse, puedes ver los resultados del uso de memoria haciendo clic en la pestaña “Uso de Memoria” en la parte inferior de la ventana. Esto te mostrará un desglose del uso de memoria por pila de asignación y pila de llamadas. Cualquier fuga de memoria u otros problemas se resaltarán en rojo, lo que facilita su identificación y solución.

    En cuanto a tu código, la segunda implementación utilizando realloc () debería funcionar sin causar fugas de memoria siempre y cuando la asignación de memoria anterior se haya realizado utilizando malloc () o calloc (). Sin embargo, siempre es una buena idea probar a fondo cualquier asignación de memoria dinámica para asegurarse de que no haya problemas.

Comments are closed.