AIXで自分のコードを実行しているときに、不明確でセグメント化エラーが発生しています。次の行:AIX:未知のセグメンテーション・フォルトの問題
sourceSample +=value;
は、セグメント化エラーを示します。ここで、sourceSampleは画像を指し示すポインタです。
私は上記のコード行にいくつかの変更を行い、次の処理が行われます。
int *p = sourceSample; sourceSample = p + value;
セグメンテーションフォールトが持続します。int **p = &sourceSample; sourceSample = *p + value;
セグメンテーションフォルトがなく、コードが成功して実行されます。
これはなぜ起こっているのですか?
ps:これはStackOverflowの最初の質問ですので、私が何かを見逃してしまった場合は私に謝ってください。
あなたが欠けていたことは、コードから関連する抜粋全体を投稿していたため、問題を再現することができました。参考:[MCVE] –
(a)元のソース行が何をしようとしているのか、(b)それらの変更が実際に何を意味するのか、そしてそれらがどのように異なっているのか知っていますか?もしそうでなければ、私は今あなたに知らせるでしょう:*推測*はあなたがプログラムを学ぶ方法ではありません。 – WhozCraig
準拠したC++実装で実行されているC++プログラムからセグメンテーションフォルトを得る唯一の方法は、そのプログラムが未定義の動作を示すことです。未定義の性質を判断するには[mcve]が必要ですが、 'sourceSample + value'は' sourceSample'が指すオブジェクトの境界の外側を指している可能性があります。このようなポインタ値を計算しようとすると、未定義のビヘイビアが生成されます。技術的に結果を間接参照する必要はありません。 –