gpt4 book ai didi

c - int 指针不会返回,触发 SIGABRT

转载 作者:行者123 更新时间:2023-11-30 19:15:57 26 4
gpt4 key购买 nike

我对这段代码束手无策 X( 我似乎无法弄清楚为什么我的代码中的指针 intarray 不会返回并触发 SIGABRT...该指针似乎已被分配了一个值 0x0000000100400000,所以我不知道为什么代码不会返回该值......以下是我的数组生成函数的相关代码以及我使用的结构体和使用它的 main() 部分:

struct ArrAndInv {
int *array;
long inversionCount;
};


int * arrayGenerator(FILE *file, int size_of_array) {
int *intarray = malloc(size_of_array * sizeof(int));
char num[8];
char c = '\0';
int addnumber;
int i;
int j;

for (i=0; i < size_of_array; i++) {
for (j=0; j < 8; j++) {
c = fgetc(file);
if (c != EOF && c != '\n') {
num[j] = c;
}
else {
break;
}
}
num[j+1] = '\0';
addnumber = atoi(num);
for (j = 0; j < 8; j++) {
num[j] = '\0';
}
intarray[i] = addnumber;
if (c == EOF) {
break;
}
}
return intarray;
}


int main() {
struct ArrAndInv arya;
FILE *integerarray = fopen("/Users/MyName/Desktop/IntegerArray.txt", "r");
int arraysize = 100000;

// Some more code

rewind(integerarray);
arya.array = malloc(arraysize * sizeof(int));
arya.array = arrayGenerator(integerarray, arraysize);

// More code
}

我快要崩溃了,因为这段代码充满了烦人的小技术问题(就像我不知道如果它是 100000 个整数,则必须在堆中分配一个整数数组 - 仅这个错误就花费了相当多的时间)需要一段时间才能弄清楚)。

最佳答案

char num[8];
...
for (j=0; j < 8; j++) {
...
}
num[j+1] = '\0';

如果该循环运行了 7 或 8 次,则以下语句的写入超出了 num 的范围。根据堆栈的布局,这可能会损坏您的指针或以其他方式导致问题。

关于c - int 指针不会返回,触发 SIGABRT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31509016/

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