为什么从getopt_long()中省略这一行会导致段错误?

用户名

在我使用gcc -Wall getopt.c -o options并运行了一些示例进行编译之后,乍一看似乎可以正常工作。故意将其绊倒会导致Segfault。

//straight from the man page
static struct option long_options[] = {
    {"add",     required_argument, 0,  0 },
    {"append",  no_argument,       0,  0 },
    {"delete",  required_argument, 0,  0 },
    {"verbose", no_argument,       0,  0 },
    {"create",  required_argument, 0, 'c'},
    {"file",    required_argument, 0,  0 },
    {0,         0,                 0,  0 } //<-- if i omit this line, it segfaults
};

当我省略那一行时,为什么会引起分段错误?

或者,以不同的方式问

为什么必须将最后一组struct option array成员初始化为null?

泡菜先生

简单。因此,处理数组的代码知道何时结束。这叫做哨兵。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

getopt_long() 的段错误

为什么注释掉shell脚本中的这一行(使用pdftk)会导致问题?

删除部分的最后一行会导致崩溃

从tableview中删除一行会导致崩溃?

为什么这个用于检查一行是否为回文的程序会返回段错误?

为什么这一系列的指针操作会导致错误?

为什么我的 PHP 代码的一行会干扰下一行?(意外的标识符错误)

为什么这个简单的 Python 代码会引发 UnboundLocalError 以及为什么更改一行会影响它之前的行?

为什么这一行被java忽略?

为什么 sharedFlow collect 不会执行这一行?

为什么在haskell的这一行中,$不能代替()

为什么这一行没有颤动

为什么 lldb 跳过这一行?

time()和gettimeofday()之间的区别以及为什么一个会导致段错误

BASH:使用awk过滤唯一行会导致长度为0的数组

在表格中添加一行会导致ader中的元素移入tbody

删除一行会导致浏览器冻结

为什么指针算术会导致段错误?

为什么使用char **会导致char *工作的段错误?

为什么这个 Py_DECREF 会导致段错误?

为什么此功能会导致段错误?

使用getopt_long处理用户错误

从任何Linux命令输出中省略第一行

为什么我的fstab中的这一行给我一个“无效参数”错误

使用Worksheet_Change删除一行会在VBA代码中导致错误

返回wordpress结果集的第一行会产生解析错误

当该行中没有数据时,循环中的最后一行会添加一行错误

为什么一个二维数组会导致段错误,而另一个不会?

在使用非共享属性 (TypeScript) 时,从联合类型的对象中省略共享属性会导致错误