c - 有什么方法可以保证段错误吗?

标签 c segmentation-fault undefined-behavior

我知道段错误是未定义行为的常见表现形式。但是我有两个小问题:

  1. 所有段错误都是未定义的行为吗?

  2. 如果不是,有什么方法可以确保出现段错误吗?

What is a segmentation fault? is far more general than my question and none of the answers answers any of my questions.

最佳答案

段错误只是意味着您对内存进行了无效访问——要么是因为请求的地址未映射(映射错误),要么是因为您没有访问它的权限(访问错误)。

  1. 存在有意的段错误。可以找到一个这样的例子 here -- 一个迷你应用程序,它故意使用内存页面的权限来检测给定函数在何处进行写入。

  2. 最简单的方法是使用 raise功能。

来源:

#include <signal.h>    
int main() {
    raise(SIGSEGV);
    return 0;
}

关于c - 有什么方法可以保证段错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54817875/

相关文章:

c - 查找指针指向的字符串的大小

c - c 程序的 makefile(在 knoppix 上)

c - 在 C 中查找段错误

c - 读取 PPM 时出现段错误

C++ CTRL+C 处理程序具有未定义的行为?

c - 如何在 Windows 上包含外部 C 库

c - 不使用递归或堆栈的树的后序遍历

c - 从函数返回到 main 的指针数组为 NULL

c - 考虑增量运算符,以下程序的输出是什么

c++ - 在函数参数未定义行为中使用赋值运算符吗?