C函数调用分段错误[重复]

Posted

技术标签:

【中文标题】C函数调用分段错误[重复]【英文标题】:C function call segmentation fault [duplicate] 【发布时间】:2021-04-05 18:07:58 【问题描述】:

递归指针函数时遇到段错误。

#include <stdio.h>

int func(int(*function)()) 
    (*function)();
    func(function);
;

int function() 

;

int main() 
    func(function);
;

在编译和执行时,递归函数调用会持续几个周期,然后抛出一个段错误。有关如何解决此问题的任何想法?

【问题讨论】:

它是如何停止的? 更新:只需将 -O2 添加到 gcc args 即可修复它 可能是优化器简单地将您的代码一起删除。由于它没有可见的效果,因此很容易被完全忽略。如果它运行,它将永远运行。 【参考方案1】:

很可能,您只是用完了堆栈帧中的空间,因为您的函数将永远递归。

【讨论】:

以上是关于C函数调用分段错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从 C 调用汇编函数时出现分段错误错误

在调用函数中取消引用指针时出现分段错误

在C中调用fgets时出现分段错误

为啥这个程序在调用函数时会出现分段错误?

在新线程内调用OpenCV函数Canny()会导致分段错误

从 C++ 到 Pro *C 的控制转换期间的分段错误