指针数组指针删除错误

时间:2017-05-29 09:31:41

标签: c arrays pointers

好的,所以我得到了addCar,Copy_Arr和free_A这两个函数。我低音希望每次新的int * carNum指向添加到动态数组 int ** CarArray ,所以我必须使用临时数组来执行此操作。 程序一直停留在free_A函数上,我不会忘记原因。

 void main()
    {
        int **CarArray=NULL;
        int *carNum = NULL;
        int *numOfCars;
        numOfCars=(int)malloc(sizeof(int));
        *numOfCars = 0;
        addCar(CarArray,carNum,numOfCars);
    }

    int **addCar(int **CarArray, int *carNum, int *numOfCars)
    {
        int i,size;
        int** temp=NULL;
        temp=Build_A(temp,*numOfCars + 1);//function for memory allocation
        carNum=buildNumber();
        temp[*numOfCars] = carNum;
        Copy_Arr(CarArray, temp,*numOfCars);
        free_A(CarArray, *numOfCars);
        *numOfCars = *numOfCars + 1;
        CarArray=Build_A(CarArray, *numOfCars);
        Copy_Arr(temp, CarArray, *numOfCars);
        free_A(temp, *numOfCars);
        return CarArray;


    }


    void Copy_Arr(int **From, int **To, int  numOfCars)
    {
        int i,j,size = 0;
        for (j = 0;j < numOfCars;j++)
        {
            size = From[j][0];
            for (i = 0;i <size+1;i++)
            {
                To[j][i] = From[j][i];
            }
        }
    }


    void free_A(int **Arr, int num)
    {
        int i;
            for (i = 0;i < num;i++)
            {
                free(Arr[i]);
            }

        free(Arr);
    }

    int** Build_A(int **Arr, int num)
    {
        Arr = (int **)malloc((num) * sizeof(int*));
        int i = 0;
        for (i = 0;i < num;i++)
        {
            Arr[i] = (int*)malloc(num * sizeof(int));
        }
        return Arr;
    }

int *buildNumber()
{
    int i,num;
    int size;
    int* arr=NULL;
    printf("Please Enter Plate Size\n");
    scanf("%d", &size);
    printf("Please Enter Plate Number\n");
    scanf("%d", &num);
    arr = (int*)malloc((size+1) * sizeof(int));
    for (i = size;i > 0;i--)
    {
        arr[i] = num % 10;
        num = num / 10;
    }

    arr[0] = size;
    printarr(arr);

    return arr;


}

1 个答案:

答案 0 :(得分:0)

问题应该在第18行:

Copy_Arr(CarArray, temp,*numOfCars);

因为&#39; CarArray&#39;此时为NULL。所以在第35行:

size = From[j][0];

这应该是一个错误。

相关问题