请问大家在Leetcode上为什么会显示 heap-buffer-overflow,实在找不出问题了

G-F-N 2020-07-31 08:52:14
int ina(int x,int* nums,int m)
{

for(int i=0;i<m;i++)
{
if(x==nums[i])
return 1;
}
return 0;
}

/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
int *res=malloc(sizeof(int)*2);
int i,j,k=0,m=0;
for(i=0;i<numsSize;i++)
{
if(nums[i]>target) break;
for(j=i+1;j<numsSize-1;i++)
{
if(nums[j]>target) break;
if(nums[i]+nums[j]==target)
{
if(!ina(i,res,m)&&!ina(j,res,m))
{
res[m]=i;
m++;
res[m]=j;
m++;
}
else
break;

}
}
}
*returnSize=m;
return res;

}

...全文
1309 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
断桥鸥鹭 2021-01-24
  • 打赏
  • 举报
回复
第一个break如果在第一次nums[0]不满足,就跳出循环了,还能继续后面的?
zgl7903 2020-08-09
  • 打赏
  • 举报
回复
int *res=malloc(sizeof(int)*2 ); //2个大小够么?
if(!ina(i,res,m)&&!ina(j,res,m)) //这之前res 缓冲区都没有赋值/初始化 是否调用的参数有误?



kaisun64 2020-08-09
  • 打赏
  • 举报
回复
同问,在做3sums时出现同样的问题
5250 2020-08-04
  • 打赏
  • 举报
回复
这个错误一般是对内存越界
比如你malloc了4字节的空间 却给赋值超过4字节的东西 就会报这个错

你现在malloc了8个字节 你下面res[m]=j;
m是否超过了2,是的话 就报这个错
G-F-N 2020-08-03
  • 打赏
  • 举报
回复
1. 两数之和
lexnewgate 2020-08-01
  • 打赏
  • 举报
回复
不看意图的话,肯定是无限递归了. base没有考虑清楚导致的.
lexnewgate 2020-08-01
  • 打赏
  • 举报
回复
题目编号可以说下. 只看代码不懂意图.

69,380

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧