Was passiert, wenn ich eine freigegebene Variable in C aufnehme

#include <cs50.h>
#include <stdio.h>

int main(void)
{
  {
    int* px = malloc(sizeof(int));
    *px = 3;
    printf("&px = %i, px = %p\n", *px, px);


    free(px);

    if( px == NULL)
        printf("px is null after free\n");
    else
        printf(" px = %p\n",px);
   }
//     this printf would demonstrate that px is out of scope.
//            printf(" px = %p\n",px);
}
chfle