我试着运行下列程序来使用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