我想将一个一个文件,以及它的一些信息放到一个BUFFER中,文件长度是dwSize。文件名是100个长度的CString,文件长度是10个长度的CString。再加上一位标志位。代码如下:char *pBuffer = new char[dwSize+111];
//将标志位设置为1
memcpy(pBuffer,"1",1);
//设置文件长度
memcpy(pBuffer+1,strFileLength,10);
//设置文件名
memcpy(pBuffer+11,strFilePath,100);
//设置文件内容
memcpy(pBuffer+111,pFileBuffer,dwSize);运行几次的时候很正常,可是运行的次数多了之后就报异常,DEBUG模式下,箭头停在了memcpy这里,然后必须中断,不能继续了。文件也不是很大,所以这里分配内存是不会出现问题的,数据处理完成之后内存我都回收了,排除了内存泄露的问题。
pBuffer  new 出来时候 我调用 memset  方法初始化一下也不行。
请教高手指教!

解决方案 »

  1.   

    Unicode模式下CString中是wchar_t,大小2字节
      

  2.   

    停在你的语句中的哪一个memcpy调用处呢?此时,相关参数的值看一下是否正常。
      

  3.   

    检查对应的CString等字符串长度是否正确,主要Unicode等
      

  4.   

    楼主你在检查其他地方是不是操作Buffer越界了?
      

  5.   


    停在了设置完标志位之后的那一句上面。//设置文件长度 
    memcpy(pBuffer+1,strFileLength,10);但是我看到strFileLength内容实际上已经拷贝进入到pBuffer里面了啊。
      

  6.   

    谢谢大家,问题搞定。
    看来真是CString 的问题。
    我把CString 转化为 char *之后再拷贝就没问题了。
    结贴了。