You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

代码触发Segmentation Fault (core dumped),咨询是否存在语法问题

代码触发Segmentation Fault的原因及修复方案

你的代码触发段错误主要有几个核心问题:

  • 参数类型完全不匹配:checksub函数的参数定义为char strng(单个字符),但你传入的"twoi"是字符串字面量,在C语言里它的类型是const char*(指向字符串首地址的指针)。把指针赋值给单个char变量时,只会保留指针的一个字节(其余字节丢失),导致调用strlen时传入的是一个无效的内存地址,直接触发段错误。
  • 缺少必要头文件:使用strlen函数必须包含<string.h>头文件,否则编译器会对该函数进行隐式声明,可能引发未定义行为。
  • 函数未返回值:checksub声明为返回int类型,但函数体内没有return语句,违反C语言标准,同样会导致未定义行为。

修复后的代码如下:

#include <stdio.h>
#include <string.h>

int checksub(const char* strng){
    int a = strlen(strng);
    printf("%d\n", a);
    return a;
}

int main(){
    checksub("twoi");
    return 0;
}

内容的提问来源于stack exchange,提问作者Light

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 15:00:16