【问题标题】:C : load of null pointer of type 'int' (__Serializer__.c), Error in my codeC:加载'int'类型的空指针(__Serializer__.c),我的代码出错
【发布时间】:2020-05-03 06:45:43
【问题描述】:

我的上述问题的代码收到以下运行时错误 “第 207 行:字符 3:运行时错误:加载 'int' 类型的空指针 (Serializer.c)” 关于我做错了什么的任何建议。 我的代码:

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

【问题讨论】:

  • 第 207 行是哪一行? (我几乎可以肯定你想返回returnSize,而不是*returnSize。)
  • 那么您是否检查过returnSizenums 是否为NULLreturn *returnSize; - 这是否打算将int 转换为int*?您是否启用了编译器警告?
  • 回归!你需要返回一个指针而不是一个引用!!返回您从 malloc 收到的指针。这段代码有太多问题要讨论,检查malloc返回值,变量名,检查输入参数等等

标签: c


【解决方案1】:
int* twoSum(int *nums, int numsSize, int target, int* p_retval_size)
{
int x=0,i,j;
int* p_retval = NULL;

/*check inputs*/
if(!nums || numSize < D_SOME_PREDEFINED_VALUE || !(p_retval = (int*)malloc(2 * sizeof(int)))
{
    *p_retval_size=0;
    return p_retval;
}

/*do the function work */

*p_retval_size = 2;
return p_retval;
}

在上面的代码中,您可以看到对您的函数的一些修复!

【讨论】:

    猜你喜欢
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 2021-05-11
    • 2011-09-01
    • 1970-01-01
    相关资源
    最近更新 更多