0

ansi c コードで問題が発生しています。PPM 画像 (P6) を読み取り、それをカラー (int) 配列に書き込みたいと考えています。すべてがうまくいくはずですが、残念ながらそうではありません。

問題は、ある時点で読み取りがフリーズすることです-毎回この同じ時点で。

これは読むためのコードです:

int **red,**blue,**green;
    //... Some code, allocations etc.
    static unsigned char a[3];
    for(i = 0; i < x; i++)
    {
           for(j = 0; j < y; j++)
           {
                fread(a, 1, 3, pic);
                red[i][j] = a[0];
                //green[i][j] = a[1];
                //blue[i][j] = a[2];
           }
    }

値 24 を読み取ると、おかしくなっています - すべてが正常になる前に。この値は赤に割り当てられ、ループの最後まで 24 です。

そこで何が起こっているのかまったくわからないので、皆さんにアドバイスを求めています - ここで何が間違っている可能性があり、どのように修正できるのでしょうか?

編集

これは私の割り当てです:

red = (int **)malloc(sizeof(int*) * x);
green = (int **)malloc(sizeof(int*) * x);
blue = (int **)malloc(sizeof(int*) * x);

for (i = 0; i < x; i++)
{
       red[i] = (int*)malloc(sizeof(int) * y);
       green[i] = (int*)malloc(sizeof(int) * y);
       blue[i] = (int*)malloc(sizeof(int) * y);
}

EDIT2:

X は 473、Y は 600

EDIT3:

私は言われたとおりに、私のソースコードを dropbox: codeにアップロードしました(今回は異なります) 。画像は異なりますが、ある時点でフリーズします。今回は70です。

4

1 に答える 1