为什么我的悬空指针不会导致分段错误?

And*_*eri 0 c segmentation-fault dangling-pointer

我的代码:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int *p = (int *)malloc(sizeof(int));
    free(p);
    *p = 42;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个指针,然后我将它指向分配的空间,最后我给它分配了42.在我看来它不应该工作,它应该导致分段错误,但它的工作原理.所以为什么?

PS:我通常在Linux上用Gcc编译它

lit*_*adv 12

纯粹的运气.在这种情况下的行为是未定义的.即:对可能发生的事情没有任何期望.