首页 > 解决方案 > “分段错误(核心转储)”是什么意思,为什么会发生?

问题描述

我正在尝试实现一种将着色器导入为 glsl 文件的方法,但我得到bash: line 1: 71365 Segmentation fault (core dumped)了退出代码139

这是我的代码的删减版:

char* s_readShaderFile(FILE* fp){
    
    fseek(fp, 0L, SEEK_END);
    int len = ftell(fp);

    char line[256]; 
    printf("aaaaa\n");
    char* sh = alloca(len * sizeof(char));

    while(!feof(fp)){
        fgets(line, 255, fp);
        strcat(line, "\n");
        strcat(line, sh);
    }

    return sh;
}
int main (){
    FILE* f_sh_vertex = fopen("Shaders/frag.glsl", "r");
    char* sh_vertex = s_readShaderFile(f_sh_vertex);
    fclose(f_sh_vertex);

    FILE* f_sh_fragment = fopen("Shaders/frag.glsl", "r");
    char* sh_fragment = s_readShaderFile(f_sh_fragment);
    fclose(f_sh_fragment);

    return 0;
}

标签: csegmentation-fault

解决方案


推荐阅读