c언어로 raw파일을 bmp로 바꾸려고 하는데 오류가 나네 ㅠ 어디가 문제인지 찾지못하겠어ㅜ

부탁해.ㅜㅜ

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

struct RGB{
 BYTE r;
 BYTE g;
 BYTE b;
};
BYTE image[512][512];
int  main()
 {
  FILE *fp;
  FILE *fp1;
  int imageW = 512;
  int imageH = 512;
  int storeW = imageW;
  
  RGB image[512][512];

  BITMAPFILEHEADER bh;
  BITMAPINFOHEADER bInfo;


  int i = 0;
  RGBQUAD rgb;
  unsigned char *image[1000];
  
  fp = fopen("lena.raw", "rb");
  if (fp == NULL)
  {
   printf("open lena.raw failed\n");
   return 0;
  }

  for (i = 0; i<512; i++)
  {
   image[i] = malloc(512);
   fread(image[i], 1, 512, fp);
  }
  fclose(fp);
  fp1 = fopen("new.bmp", "wb");
  if (fp1 == NULL)
  {
   printf("open new.bmp failed\n");
   return 0;
  }


  if (storeW % 4 != 0)
  {
   storeW += (4 - storeW % 4);//
  }
  
  bh.bfType = ((WORD)('M' << 8) | 'B');
  bh.bfReserved1 = 0;
  bh.bfReserved2 = 0;
  bh.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256 + storeW*imageH;
  bh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256;
  bInfo.biSize = sizeof(BITMAPINFOHEADER);
  bInfo.biWidth = imageW;
  bInfo.biHeight = imageH;
  bInfo.biPlanes = 1;
  bInfo.biBitCount = 8;
  bInfo.biCompression = BI_RGB;
  bInfo.biSizeImage = storeW*imageH;
  bInfo.biXPelsPerMeter = 0;
  bInfo.biYPelsPerMeter = 0;
  bInfo.biClrUsed = 256;
  bInfo.biClrImportant = 0;
  fwrite(&bh, sizeof(BITMAPFILEHEADER), 1, fp1);
  fwrite(&bInfo, sizeof(BITMAPINFOHEADER), 1, fp1);

  rgb.rgbReserved = 0;
  for (i = 0; i<256; i++)
  {
   rgb.rgbBlue = rgb.rgbRed = rgb.rgbGreen = i;
   fwrite(&rgb, sizeof(RGBQUAD), 1, fp1);
  }
  for (i = 0; i<256; i++)
  {
   fwrite(image[511 - i], 1, 512, fp1);
  }
  fclose(fp1);
  return 0;

 }