C++ 为ppm/pgm图像数据创建存储

C++ 为ppm/pgm图像数据创建存储,c++,C++,所以我正在研究一个类,它应该读入pgm/ppm文件并最终修改它。然而,我仍在努力读取数据。我目前的目标是为二进制数据创建存储空间。下面是我为一个函数编写的代码,该函数应该可以做到这一点: uchar* pxm::newimg(int nrows, int ncols, int bpp) { uchar *newimage = new uchar[nrows * ncols * bpp]; //uchar defined a

所以我正在研究一个类,它应该读入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();
不幸的是,当此代码编译时,在运行时会产生分段错误。我相当确定我的问题出在newimg函数中,因为我已经进行了检查,以确保正确读取文件,并正确设置了nrows、ncols和bpp以及magicid。因此,我假定我没有正确初始化数组数据结构。如果有人有任何建议,我们将不胜感激。 谢谢 泽塔 附笔
如果你需要更多关于我的代码的详细信息,请索取,我会在帖子中添加更多信息。

(char*)img[0]
应该是
img
,或者
(char*)img

对于像这样的琐碎问题,最好直接问你的老师或助教,而不是堆积如山。对。编译器假定您知道将
uchar
重铸为
char*
时正在做什么,即使一个是指针,另一个不是指针。