我想将一个一个文件,以及它的一些信息放到一个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
memcpy(pBuffer,"1",1);
//设置文件长度
memcpy(pBuffer+1,strFileLength,10);
//设置文件名
memcpy(pBuffer+11,strFilePath,100);
//设置文件内容
memcpy(pBuffer+111,pFileBuffer,dwSize);运行几次的时候很正常,可是运行的次数多了之后就报异常,DEBUG模式下,箭头停在了memcpy这里,然后必须中断,不能继续了。文件也不是很大,所以这里分配内存是不会出现问题的,数据处理完成之后内存我都回收了,排除了内存泄露的问题。
pBuffer new 出来时候 我调用 memset 方法初始化一下也不行。
请教高手指教!
停在了设置完标志位之后的那一句上面。//设置文件长度
memcpy(pBuffer+1,strFileLength,10);但是我看到strFileLength内容实际上已经拷贝进入到pBuffer里面了啊。
看来真是CString 的问题。
我把CString 转化为 char *之后再拷贝就没问题了。
结贴了。