私のプログラムがなぜセグメンテーション違反であるのかわかりにくいです。どんな助け? いくつかのコンテキスト:これは、さまざまな入力で実行され、関数が正しいかどうかを判断するプログラムを通じて、このメソッドを実行するコード割り当てです。この割り当ての目的は、アセンブリを読み取り、指定されたアセンブリに基づいて関数を構築することです。私のプログラムはなぜsegfaultですか?
私はcomp4メソッドとは思えません。なぜなら、私はそれを指定されたアセンブリと比較しており、それはproblem4メソッドにあることを示唆していますが、問題4に何があるかはわかりませんseg fault。誰も助けてくれますか?
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;
}
デバッガで実行します。 segfaultを生成するのはどの行ですか? –
'long int * ap;' ...... * ap = a;初期化されていないポインタUB。 –
ここで、 '* ap = a'は初期化されていないポインタを間接参照します。あなたは 'ap =&a'を意味しましたか?それは 'a'を' p'にします。 –