首页 > 解决方案 > 运行时错误:加载“int”类型的空指针

问题描述

问题陈述说“给定一个整数数组,返回两个数字的索引,使它们加起来成为一个特定的目标。” 我得到一个

运行时错误:使用以下给定代码加载类型为“int”的空指针。

我尝试了循环的各种变体,但似乎没有找到任何可行的解决方案。

int* twoSum(int* nums, int numsSize, int target, int* returnSize){

    if (nums==NULL || numsSize==0 || returnSize==NULL){
        printf("Invalid args passes.");
        return NULL;    
    }

    if (*returnSize <= 0 || *returnSize > 16){
        printf("Invalid amount of memory being asked for!");
        return NULL;
    }

    int i=0,j=0;
    int *returnIndex = NULL;

    for (i=0 ; i<numsSize ; i++){
        for (j=(i+1) ; j<numsSize ; j++){
            if ((nums[i]+nums[j]) == (target)) {

                returnIndex = (int *)malloc((*returnSize) * (sizeof(int)));
                if (returnIndex==NULL){
                    printf("\nCould not allocate memory.\n");
                    return NULL;
                }

                returnIndex[0]=i;
                returnIndex[1]=j;               
                return returnIndex;
            }
        }
    }

    /* No match found with regards to target */
    return NULL;
}

我希望程序打印出两个符合目标的数字相加的索引。

标签: cpointers

解决方案


推荐阅读