gpt4 book ai didi

c - 为什么我的程序出现段错误?

转载 作者:行者123 更新时间:2023-11-30 17:02:53 25 4
gpt4 key购买 nike

我很难弄清楚为什么我的程序出现段错误。有什么帮助吗?一些上下文:这是一个编码作业,我通过一个程序运行此方法,该程序使用各种输入执行并确定该函数是否正确。此作业的目的是读取程序集并根据给定的程序集构造一个函数。

我不认为这是comp4方法,因为我将它与给定的程序集进行了比较,并且它是相同的,这表明它在问题4方法中,但我不知道问题4中的什么甚至可能导致段错误。有人可以提供任何帮助吗?

long int comp4(long int * a, long int b) {
long int output = *a;
long int newa = output + b;
*a = newa;
return output;
}

long int problem4(long int a, long int b){
int i;
long int* ap;
*ap = a;
long int sum;
long int holder;
for (i=0;i<b;i++){
sum = sum + i*8;
holder = comp4(ap,2);
sum = sum + holder;
}
return sum;
}

最佳答案

ap 是一个未初始化的指针。当您声明long int *ap时,它会在堆栈上分配一 block 内存,该内存可以保存long int *的地址,但它不会为要保存的变量分配内存。这个指针可以指向。

因此,您需要先初始化指针值,然后才能使用 * 运算符取消引用它。

更合适的方法是::

long int *ap = &a;

long int *ap = malloc(sizeof(long int));
*ap = a;

取消引用未初始化的指针是程序出现段错误的原因!

关于c - 为什么我的程序出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36364373/

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