【leetcode报错】AddressSanitizer: heap-buffer-overflow on address 0x6020000000a0 at pc 0x00000034b4d9 bp

深碍√TFBOYSˉ_ 2022-11-03 00:53 93阅读 0赞

原题是力扣第一道题【两数之和】

我的解题代码,报错了,解决方案写在注释里了

  1. class Solution {
  2. public:
  3. vector<int> twoSum(vector<int> &nums, int target)
  4. {
  5. vector<int> vec;
  6. for (int i = 0; i < sizeof(nums)-1; i++) //改成nums.size()就不会报错了
  7. {
  8. for (int j = i + 1; j < sizeof(nums); j++) //改成nums.size()就不会报错了
  9. {
  10. int sum = nums[i]+nums[j];
  11. if (sum == target)
  12. {
  13. vec.push_back(i);
  14. vec.push_back(j);
  15. return vec;
  16. }
  17. }
  18. }
  19. return vec;
  20. }
  21. };

报错详情:
在这里插入图片描述
报错详因:
num.size()直接是直接获取当前字符串的长度,而sizeof(nums)是直接获取当前字符串所占空间的大小。

参考:https://blog.csdn.net/qq\_36409711/article/details/65431318

发表评论

表情:
评论列表 (有 0 条评论,93人围观)

还没有评论,来说两句吧...

相关阅读

    相关 0x0D && 0x0A

    1.在window的文本文件中,回车符(换行)存储的方式是0x0d(CR),0x0a(LF)这两个字节,以C语言字符串表示就是“\\r\\n”。    但是其他的操作系统中,