2017-11-20 7 views
2

が得られます。単純な計算では私はGDBに次のコード行をデバッグしようとしています矛盾した結果

p=((uint32 *) tiff_pixels)+image->columns*i; 

p i8

p columnsをyeilds正しく256

を生み出す 32

p image->columns*iをyeilds

p ((uint32 *) tiff_pixels)の利回り

0x619000008780ので、私は0x619000008880を得((uint32 *) tiff_pixels)+image->columns*iを期待するが、私が代わりに0x619000008b80を取得します。

私はおそらくここでは些細なエラー/仮定をしていますが、わかりません。

答えて

2

各ピクセルのサイズ(4バイト)を忘れてしまった。

p=((uint32 *) tiff_pixels)+image->columns*i; 

あなたはuint32へのポインタであることをtiff_pixelsをキャストしました。各uint32は4バイトです。ポインタに1を加えると、の次のuint32を指します。最初のバイトの後の4バイトです。

+0

右!ありがとうございました。私はこれが正しいことをマークするつもりです。 – SivaDotRender

関連する問題