我的代码:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int *p = (int *)malloc(sizeof(int));
free(p);
*p = 42;
return 0;
}
我创建了一个指针,然后我将它指向分配的空间,最后我给它分配了 42。 在我看来它不应该工作,它应该导致段错误,但它工作。 那么,为什么?
PS: 我通常在 Linux 上用 Gcc 编译它
最佳答案
纯粹的运气。这种情况下的行为是未定义。即:不能对可能发生的事情做出任何期望。
关于c - 为什么我的悬挂指针不会导致段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20723697/