C Compiler Logo

Use After Free

Use After Free

memory

heap use after free

Description

The program uses memory after it has been freed, which can lead to unpredictable behavior.

Common Causes

Example of Error

Error Code

int main() {
    int *ptr = malloc(sizeof(int));
    *ptr = 10;
    free(ptr);
    printf("%d\n", *ptr);  // Use after free
    return 0;
}

Solution

Set pointers to NULL after freeing them and check before using.

Corrected Code

int main() {
    int *ptr = malloc(sizeof(int));
    if (ptr != NULL) {
        *ptr = 10;
        free(ptr);
        ptr = NULL;  // Set to NULL after freeing
    }

    // Check before using
    if (ptr != NULL) {
        printf("%d\n", *ptr);
    } else {
        printf("Pointer is NULL\n");
    }

    return 0;
}

Additional Tips