gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:55:31 24 4
gpt4 key购买 nike

我对 C 编程还很陌生。我需要编写一个适用于动态数组的程序。 (接受值并在数组已满时将其大小加倍)。我的程序已完成并且编译正常,但我继续在注释行中收到此错误:Thread 1: EXC_BAD_ACCESS (code=2, address:(some long address).

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

最佳答案

temp[i] = array->value[i];  // error occurs HERE

很明显,因为您还没有为 temp 分配内存。

关于非常基本的 C 程序上的 C 编程 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34837280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com