c - 为什么我的悬挂指针不会导致段错误?

标签 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;
}

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

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

最佳答案

纯粹的运气。这种情况下的行为是未定义。即:不能对可能发生的事情做出任何期望。

关于c - 为什么我的悬挂指针不会导致段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20723697/

相关文章:

c - 字符串的哈希算法

c++ - 尝试获取 vector 的大小会导致段错误

c - malloc 和段错误

c++ - C++ 中的这种未定义行为是从悬空指针调用函数吗

c++ - 迭代 OpenCl 内核

android - 奇怪的 const 定义与 asm

c - jni.h 和预期 ‘=’ , ‘,’ , ‘;’ , ‘asm’ 或 ‘__attribute__’ 之前 ‘void’

c - 矩阵优化 - 使用内在函数和循环展开时出现段错误

c++ - 从 STL 容器中删除元素时是否调用析构函数?

c++ - 如何避免将句柄返回到对象内部 - Item 28 Effective C++