2012-09-21 47 views
-1

所以我的工作是應該在PGM/PPM文件的讀取,並最終修改它的類。不過,我仍然在閱讀數據。我現在的目標是爲二進制數據創建的存儲空間。下面是我所應該做的是功能代碼:創建存儲的PPM/PGM圖像數據

 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。因此,我相信我沒有正確初始化數組。如果任何人有任何建議,將不勝感激。 謝謝, Zeta p.s 如果您需要我的代碼的更多細節,請求它,我會添加更多的帖子。

+0

對於這樣的微不足道的問題,最好是問問你的老師或TA,而不是混淆StackOverflow。 – Quuxplusone

回答

2

(char *) img[0]應該是img(char *) img

+0

權。編譯器會假設你知道你在將一個'uchar'改寫爲'char *'時會做什麼,即使它是一個指針而不是一個指針。 –