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

LeetCode两个数组的交集提交报错:heap-buffer-overflow问题求助

解决LeetCode「两个数组的交集」提交时堆缓冲区溢出问题

问题情况

本地运行代码完全正常,输出结果也符合预期,但提交到LeetCode后直接触发运行时错误:ERROR: AddressSanitizer: heap-buffer-overflow on address,找不到问题根源。相关截图如下:

  • [解决方案代码截图]
  • [本地运行结果截图]
  • [LeetCode提交报错截图]

常见排查方向

  • 数组越界访问:仔细检查代码里所有数组索引操作,比如有没有把循环条件写成i <= nums1.size()而非i < nums1.size(),或是处理哈希表、集合时边界判断出错。
  • 动态内存分配失误:如果手动分配了内存(比如C++中用new),要确认分配的空间能否容纳结果,有没有出现写入超出分配范围的情况。
  • 测试用例覆盖不全:本地测试用例可能过于常规,LeetCode包含极端场景测试,比如空数组、单元素数组、超大长度数组、全重复元素数组等,需要在本地单独测试这些情况。
  • 哈希表/集合操作错误:比如遍历哈希表时迭代器使用失误,或是插入、查找操作时的边界处理存在问题。

具体排查步骤

  1. 先逐一检查所有涉及数组索引的代码,把循环条件里的<=全部替换为<,确认每个索引范围都合法。
  2. 如果用动态数组存储结果,要么确认初始化长度足够,要么直接改用支持动态扩容的容器(比如C++的vector、Java的ArrayList),避免手动内存分配的风险。
  3. 本地模拟LeetCode的极端测试用例:
    • 两个输入数组均为空
    • 一个数组为空,另一个包含元素
    • 两个数组长度差异极大(比如一个长度为1,另一个为10^5)
    • 数组内元素全为重复值
  4. 查看报错截图中的具体内存地址和调用栈,定位到触发溢出的代码行,重点排查该行附近的内存操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:01:26