2017-08-17 11 views
-10

gccコンパイラを使用してbmpファイルをoutpoutするために次のプログラムを実行しようとしましたが、セグメンテーションフォルト(コアダンプ)エラーが表示されます。私はこの問題を解決する努力をしましたが、何も変わっていませんでした。 また、新しいbmpイメージを開くときにエラーが発生するような間違いを知りたいと思います。 FILE * infile;あなたが割り当てられていないポインタにLinuxでのCのセグメンテーションフォールト(コアダンプ)エラー

fread(&hf, sizeof(BITMAPFILEHEADER),1,infile); 
fread(&hInfo,sizeof(BITMAPINFOHEADER),1,infile); 

を読んでいる

FILE    *outfile; 

BITMAPFILEHEADER hf;   
BITMAPINFOHEADER hInfo;  
RGBQUAD   hRGBpal[256]; 
+0

また、 'hInfo-> biSizeImage'のような' struct'メンバのサイズとエンディアンに注意してください。リトルエンディアン形式で格納された 'DWORD'型のものです。 –

+1

インデント*お願い* –

+0

CとC++は異なる言語です。両者の違いについて具体的に尋ねない限り、両方にタグを付けないでください。 – molbdnilo

答えて

3

あなたはそれらに

編集を読んだときにこれらのポインタにメモリを割り当てる必要があります:あなたは必要なあなたに読んですることを計画している場合、読み取りから&を削除& hfは、ポインタ変数hfのアドレスを、それに割り当てられたメモリのアドレスではなく、取ります。

そうでなければ、@ user0042はポインタとしてではなく変数として宣言するだけで、メモリを割り当てる必要はありません

+1

_ "これらのポインタに読み込み時にメモリを割り当てる必要があります" _または単にポインタとして宣言することを省略します。 – user0042

+0

私に詳細な例を教えてもらえますか?あなたが言うことができません – kookoo

+0

@kookooそれに応じて 'BITMAPFILEHEADER hf;'と 'BITMAPINFOHEADER'を書きます。 – user0042

関連する問題