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

C++使用vector存储运算结果时触发SIGSEGV段错误问题求助

问题定位
  • 核心崩溃原因:函数未返回指定类型的值,函数签名为vector<int> oper(int A, int B),要求返回std::vector<int>对象,但代码末尾没有添加return arrayV;语句,调用方拿到的是非法的野对象,访问时直接触发SIGSEGV。
  • 语法逻辑错误:两处else分支写法错误,else(B >A );中额外添加了条件表达式与结尾分号,会导致else逻辑为空,后续大括号内的赋值语句无论条件是否成立都会执行,最终减法、除法逻辑不符合预期。
  • 潜在崩溃风险:除法逻辑未做除零判断,当较小的操作数为0时会触发除零错误,导致程序崩溃。
修复后代码
#include <vector>

std::vector<int> oper(int A, int B) {
    std::vector<int> arrayV;

    // 加法
    int addition = A + B;
    arrayV.push_back(addition);

    // 乘法
    int multiplication = A * B;
    arrayV.push_back(multiplication);

    // 减法(取绝对值差)
    int subtraction = A >= B ? A - B : B - A;
    arrayV.push_back(subtraction);

    // 除法(先校验除数非0,异常情况默认返回0,可根据业务调整)
    int division;
    if (A >= B) {
        division = B != 0 ? A / B : 0;
    } else {
        division = A != 0 ? B / A : 0;
    }
    arrayV.push_back(division);

    // 返回构造完成的vector
    return arrayV;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:48:01