Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 指向指针的指针数组删除错误_C_Arrays_Pointers - Fatal编程技术网

C 指向指针的指针数组删除错误

C 指向指针的指针数组删除错误,c,arrays,pointers,C,Arrays,Pointers,好的,我得到了函数addCar、Copy_Arr和free_A。我基本上希望每次指向新的int*carNum时都添加到动态数组int**CarArray,所以我必须使用临时数组来完成。 这个程序一直被困在免费函数上,我不明白为什么 void main() { int **CarArray=NULL; int *carNum = NULL; int *numOfCars; numOfCars=(int)malloc(size

好的,我得到了函数addCar、Copy_Arr和free_A。我基本上希望每次指向新的int*carNum时都添加到动态数组int**CarArray,所以我必须使用临时数组来完成。 这个程序一直被困在免费函数上,我不明白为什么

 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;


}
void main()
{
int**CarArray=NULL;
int*carNum=NULL;
国际*NUMOFARS;
numocars=(int)malloc(sizeof(int));
*numOfCars=0;
addCar(卡拉雷、卡努姆、努莫夫卡尔);
}
int**addCar(int**CarArray,int*carNum,int*numfcars)
{
int i,大小;
int**temp=NULL;
temp=Build_A(temp,*numfcars+1);//用于内存分配的函数
carNum=buildNumber();
温度[*numfcars]=卡努姆;
复印件(焦距、温度、*numOfCars);
免费(卡拉雷,*numOfCars);
*numOfCars=*numOfCars+1;
卡拉雷=建造(卡拉雷,*numOfCars);
副本(临时、临时、临时、临时);
免费(临时,*numOfCars);
返回卡拉雷;
}
无效副本(整数**从,整数**到,整数)
{
int i,j,大小=0;
对于(j=0;j
问题应该在第18行:

Copy_Arr(CarArray, temp,*numOfCars);
因为此时“CarArray”为空。所以在第35行:

size = From[j][0];

这应该是一个错误。

您是否可以包括
Build\u A
?并显示如何调用上述所有函数,或者最好显示A。我添加了void main和Build\u ano,这不是直接相关的,而是
numocars=(int)malloc(sizeof(int));
是毫无意义的。动态分配单个
int
有什么具体原因吗?无论如何,它至少应该是
numocars=(int*)malloc(sizeof(int));
或者更好的
numocars=malloc(sizeof(int))
好的,我将删除它。当CarArray为null*numfcars为0时,它甚至不会进入循环。我调试了它,并在尝试释放**temp或**carArray@Okr100什么是
buildNumber
?问题可能就在那里(不是开玩笑).Show a.@MichaelWalz添加了buildNumber。这只是一个函数,用于构建一个数字数组。@Okr100好的,现在我们可能可以提供帮助。
buildNumber
函数可能有一个微妙的错误,以后会产生戏剧性的后果。它还帮助我们构建一个(顺便说一句,您应该提供)。