我試着運行下列程序來使用gcc編譯器輸出bmp文件,但它顯示錯誤:段錯誤(核心轉儲)。我努力解決這個問題,但沒有任何改變。 此外,我想知道任何錯誤發生錯誤打開新的BMP圖像。 FILE * infile;Linux上C語言中的段錯誤(核心轉儲)錯誤
FILE *outfile;
BITMAPFILEHEADER hf;
BITMAPINFOHEADER hInfo;
RGBQUAD hRGBpal[256];
我試着運行下列程序來使用gcc編譯器輸出bmp文件,但它顯示錯誤:段錯誤(核心轉儲)。我努力解決這個問題,但沒有任何改變。 此外,我想知道任何錯誤發生錯誤打開新的BMP圖像。 FILE * infile;Linux上C語言中的段錯誤(核心轉儲)錯誤
FILE *outfile;
BITMAPFILEHEADER hf;
BITMAPINFOHEADER hInfo;
RGBQUAD hRGBpal[256];
您正在閱讀到未分配的指針
fread(&hf, sizeof(BITMAPFILEHEADER),1,infile);
fread(&hInfo,sizeof(BITMAPINFOHEADER),1,infile);
當讀取到他們
編輯您需要分配內存以這些指針:你需要從閱讀中刪除&
如果你打算讀入使用malloc分配的指針,因爲& hf將佔用指針變量hf的地址而不是分配的內存地址
否則正如@ user0042所提到的那樣,只是將它們聲明爲變量而不是指針,因此不需要爲它們分配內存。
另外,請注意'struct'成員的大小和字節順序,比如'hInfo-> biSizeImage'它是以小端格式存儲的'DWORD'類型。 –
縮進*請*。 –
C和C++是不同的語言。除非你特意詢問他們之間的差異,否則不要標記兩者。 – molbdnilo