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

向二维vector存入输入时出现Segmentation Fault的原因是什么?

问题原因分析

核心触发点是二维vector越界访问

  • 你定义的vector<vector<int>> a默认是空容器,内部没有任何元素,此时a.size()的值为0。
  • 原代码外层循环第一次执行到a[i].push_back(val)时,i的值为0,直接访问a[0]相当于尝试读取空vector的第0个元素,属于非法内存访问,直接触发段错误。

修改后代码正常运行的逻辑

  • 新版本外层循环中先创建临时一维vectortemp,把当前行的C个元素全部存入temp后,再调用a.push_back(temp)把整行插入二维vector中。这个操作会自动扩容a的容量,不存在提前访问a中不存在下标的情况,因此不会触发越界。

其他可行的修改方案

你也可以在初始化二维vector的时候就指定行数,原代码的读写逻辑也可以正常运行:

vector<vector<int>> a(R); // 初始化时就给a开辟R个空的一维vector元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:36:04