C编程EXC_BAD_访问非常基本的C程序

C编程EXC_BAD_访问非常基本的C程序,c,exc-bad-access,C,Exc Bad Access,我对C编程相当陌生。我需要写一个与动态数组一起工作的程序。(当数组已满时,接受值并将其大小加倍)。我的程序已经完成,编译工作正常,但我一直在注释行中得到这个错误:thread1:EXC_BAD_ACCESS(code=2,address:(一些长地址) 我读过这篇文章,似乎我指向了null。但是null测试没有起到作用。我以前在其他程序中遇到过这个问题,我似乎缺少一个基本点。 谁能帮我一下吗! 这是我的代码: #include <stdio.h> #include <stdli

我对C编程相当陌生。我需要写一个与动态数组一起工作的程序。(当数组已满时,接受值并将其大小加倍)。我的程序已经完成,编译工作正常,但我一直在注释行中得到这个错误:thread1:EXC_BAD_ACCESS(code=2,address:(一些长地址)

我读过这篇文章,似乎我指向了null。但是null测试没有起到作用。我以前在其他程序中遇到过这个问题,我似乎缺少一个基本点。 谁能帮我一下吗! 这是我的代码:

#include <stdio.h>
#include <stdlib.h>

typedef struct{
    int *value;
    int size;
    int MAX;
} DynArray;

void dyn_array_add (DynArray* array){
    int wert;
    int *temp;
    printf("Geben Sie einen Wert ein:\n");
    scanf("%i", &wert);

    if (array->MAX==array->size) {
        for (int i= 0; i<array->MAX; i++) {
            temp[i] = array->value[i];  // error occurs HERE
        }
        free(array->value);

        array->MAX = array->MAX*2;
        array->value=malloc(sizeof(int)* array->MAX);
        for (int i= 0; i<array->MAX; i++) {
            array->value[i] = temp[i];
        }
    }

    array->value[array->size]= wert;
    array->size++;
    for (int i = 0; i < array->MAX; i++) {
        printf("Value[%i]: %i \n", i, array->value[i]);
    }
}

int main(int argc, const char * argv[]) {


    DynArray* array;
    array = (DynArray*)malloc(sizeof(DynArray));
    array->MAX=5;
    array->size=0;
    array->value=malloc(sizeof(int)* array->MAX);

    while (1) {
        dyn_array_add(array);

    }
    return 0;
}
#包括
#包括
类型定义结构{
int*值;
整数大小;
int MAX;
}DynArray;
无效动态数组添加(动态数组*数组){
int wert;
内部*温度;
printf(“Geben Sie einn Wert ein:\n”);
scanf(“%i”和“wert”);
如果(数组->最大==数组->大小){
对于(int i=0;iMAX;i++){
temp[i]=数组->值[i];//此处发生错误
}
自由(数组->值);
数组->最大值=数组->最大值*2;
数组->值=malloc(sizeof(int)*数组->最大值);
对于(int i=0;iMAX;i++){
数组->值[i]=temp[i];
}
}
数组->值[数组->大小]=wert;
数组->大小++;
对于(int i=0;iMAX;i++){
printf(“值[%i]:%i\n”,i,数组->值[i]);
}
}
int main(int argc,const char*argv[]{
DynArray*阵列;
数组=(DynArray*)malloc(sizeof(DynArray));
数组->最大值=5;
数组->大小=0;
数组->值=malloc(sizeof(int)*数组->最大值);
而(1){
动态数组添加(数组);
}
返回0;
}

显然,由于您没有为
temp

分配内存,您是否考虑过学习如何使用调试器?
temp[i] = array->value[i];  // error occurs HERE