C在非常基本的C程序上编程EXC_BAD_ACCESS

时间:2016-01-17 10:27:38

标签: c exc-bad-access

我对C编程很陌生。我需要编写一个与动态数组配合使用的程序。 (当数据已满时,取值并使数组的大小加倍)。我的程序已经完成并且编译工作但我继续在注释行中得到此错误:线程1:EXC_BAD_ACCESS(代码= 2,地址:(一些长地址)。

我已阅读过此内容,似乎我可能指向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;
}

1 个答案:

答案 0 :(得分:3)

@foreach ($profileLikedPosts as $post)
    // ...
    @if ($authLikedPosts->contains('id', $post->id))
        // this post is liked by both; show your icon
    @endif
    // ...
@endforeach

显然,因为你没有为temp[i] = array->value[i]; // error occurs HERE 分配内存。