我调用这个函数老出现读内存错误啊!我调试了一下,是memcpy函数哪出了问题
void Save(CString srtFilePath,unsigned char *buffer ,WORD dwBufferSize)

const int nBuffer=1024;
char chBuffer[nBuffer];

int nWrite=dwBufferSize/nBuffer;
int nLast=dwBufferSize%nBuffer;
CFile f;
f.Open(srtFilePath,CFile::modeCreate|CFile::modeWrite);

int nIndex=0;
for(int i=0;i<nWrite;i++)
                 {      memcpy(chBuffer,(void*)buffer[nIndex],nBuffer);
f.Write(chBuffer,nBuffer);
nIndex+=nBuffer;
                  }

memcpy(chBuffer,(void*)buffer[nIndex],nLast);
f.Write(chBuffer,nLast);
f.Close();

}

解决方案 »

  1.   

    调用这个函数,第二个参数buffer为 UCHAR imageBuf[384 * 288*2];
                  第三个参数为384 * 288*2
      

  2.   

    dwBufferSize表示的是buffer的长度吗?
      

  3.   

    你的想法没有问题,你的写法有问题,我帮你改了一下
    void Save(CString srtFilePath,unsigned char *buffer ,WORD dwBufferSize)

    const int nBuffer=1024;
    char chBuffer[nBuffer];

    int nWrite=dwBufferSize/nBuffer;
    int nLast=dwBufferSize%nBuffer;
    CFile f;
    f.Open(srtFilePath,CFile::modeCreate|CFile::modeWrite);

    int nIndex=0;
    for(int i=0;i<nWrite;i++)
                     {      memcpy(chBuffer,buffer+nIndex,nBuffer);
    f.Write(chBuffer,nBuffer);
    nIndex+=nBuffer;
                      }

    memcpy(chBuffer,buffer+nIndex,nLast);
    f.Write(chBuffer,nLast);
    f.Close();

    }
      

  4.   

    to  skyonline(山中过客)
        你的方法我试了一下,可行的!对了能顺便帮我看下面的程序嘛?!
         UCHAR imageBuf[384 * 288*2];
    CFile f;
    f.Open("w",CFile::modeRead);
    f.Read(imageBuf,384*288*2);
    f.Close();
        这是我刚才写的那个文件,不知道这样能不能全读到imageBuf,我试了下好像有点问题的!多谢了!^_^
      

  5.   

    上面的读数据的方法可能不对,数据太大了,应该用ReadHuge()
    CFile fp ;
    char *pdata = new char[384*288*2];
    fp.Open("W",CFile::modeRead) ;
    fp.Read(pdata,384*288*2) ;
    fp.Close();估计你和我是同行啊,这是一侦数据的大小?
      

  6.   

    我这边得到的图像还是有问题,看样子W文件写的还有问题。
    to dhbo(每天进步1%) 
    这是采集卡一帧的图片,我也接触这些东西不久,我是临时被要求写这些东西的!有的搞不定,郁闷!
      

  7.   

    问题解决了,我改用C的FILE写W文件了!谢谢诸位了!