返回任意字符串时触发AddressSanitizer内存分配错误求助
解决LeetCode第349场周赛题目中的AddressSanitizer内存分配错误
错误根源
你碰到的错误:
22ERROR: AddressSanitizer failed to allocate 0xdfff0001000 (15392894357504) bytes at address 2008fff7000 (errno: 12)
22ReserveShadowMemoryRange failed while trying to map 0xdfff0001000 bytes. Perhaps you're using ulimit -v
本质是虚拟内存限制过低,导致AddressSanitizer无法分配所需的影子内存来完成内存检测,和你的代码返回结果对错无关。
解决方法
- 查看当前虚拟内存限制:运行命令
ulimit -v,如果输出数值远低于系统可用内存,说明限制生效。 - 解除虚拟内存限制:执行
ulimit -v unlimited,允许进程使用全部可用虚拟内存。 - 重新提交代码:修改限制后再运行代码,即可避开这个内存分配错误。
补充说明
如果是本地调试出现该问题,检查是否有全局的虚拟内存限制设置;如果是LeetCode平台端的问题,可尝试多次重新提交,或者排查代码是否存在极端情况下的内存过度申请(虽然当前错误和返回结果无关,但隐性内存操作可能加重资源占用)。
内容的提问来源于stack exchange,提问作者CS56 Shivanshu Singh
相关产品推荐
相关产品推荐

