-1

だから私はpgm/ppmファイルを読み込んで、最終的にそれを変更することになっているクラスに取り組んでいます。しかし、私はまだデータの読み込みに取り組んでいます。私の現在の目的は、バイナリデータ用のストレージスペースを作成することです。以下は、それを行うことになっている関数の私のコードです。

       uchar* pxm::newimg(int nrows, int ncols, int bpp)
       {
           uchar *newimage = new uchar[nrows * ncols * bpp]; 
           //uchar defined as binary data previously
           return newimage;
        }

次に、これを「読み取り」関数で次のように使用します。

       img = newimg(nrows, ncols, bpp); //img declared in private section of class
       ws(myfile); //reads the newline
       myfile.read((char *) img[0], nrows * ncols * bpp); 
       //nrows, ncols, and bpp private member variables in class
       myfile.close();

残念ながら、このコードはコンパイルされますが、実行時にセグメンテーション違反が発生します。ファイルを正しく読み取り、nrows、ncols、bpp、およびmagicidを適切に設定していることを確認するためのチェックを行ったため、問題はnewimg関数にあるとかなり確信しています。したがって、配列データ構造を適切に初期化していないと思います。誰かが何か提案があればそれはありがたいです。ありがとう、Zeta ps私のコードの詳細が必要な場合は、リクエストしてください。投稿に追加します。

4

1 に答える 1

2

(char *) img[0]img、またはである必要があります(char *) img

于 2012-09-21T17:44:58.070 に答える