首页 > 解决方案 > 第 10 行:字符 31:运行时错误:存储到地址 0x7fff6774f4f4,空间不足,无法容纳“int”类型的对象

问题描述

我收到了这个运行时错误,我不知道代码有什么问题。“第 10 行:字符 31:运行时错误:存储到地址 0x7fff6774f4f4,没有足够的空间容纳 'int' 类型的对象

int *twoSum(int *nums, int numsSize, int target, int *returnSize)
{
    for (int i = 0; i < numsSize; i++)
    {
        for (int j = i+1; j < numsSize; j++)
        {
            if (nums[i] + nums[j] == target)
            {
                returnSize[0] = i;
                returnSize[1] = j;
            }
        }
    }
    return returnSize;
}

标签: c

解决方案


我假设这是 leetcode 中的 Twosum 问题。如果是,则第四个参数*returnSize不是数组,而是指向整数的指针,该整数是您应该返回的数组的大小。这是经过修改的代码。

int *twoSum(int *nums, int numsSize, int target, int *returnSize)
{
    for (int i = 0; i < numsSize; i++)
    {
        for (int j = i+1; j < numsSize; j++)
        {
            if (nums[i] + nums[j] == target)
            {
                *returnSize = 2;
                int *rtn = (int *)malloc(2*sizeof(int));
                rtn[0] = i;
                rtn[1] = j;
                return rtn;
            }
        }
    }
    return NULL;
}

推荐阅读