memcpy为什么从一个LPBYTE拷贝到另一个LPBYTE总是出现应用程序异常有关问题

memcpy为什么从一个LPBYTE拷贝到另一个LPBYTE总是出现应用程序错误问题?
每当程序运行到 memcpy就会出现应用程序出错问题。
LPVIDEOHDR lpdata=new VIDEOHDR; //在程序中已经捕获帧值到lpdata中,现在想要将lpdata->lpData对应段的数据拷贝 出来到pBuf中进行发送。但是编译成功,每当运行到 memcpy时就出现上面的那个错误
  int iSize = 4*1024;  
  LPBYTE pBuf = (LPBYTE)malloc(iSize);; //初始化内存缓冲区
  memcpy(pBuf,lpdata->lpData+sendlen,sizeof(pBuf));
求懂的帮忙一下,不胜感激。

------解决方案--------------------
sizeof(pBuf)=4?
------解决方案--------------------
memcpy(pBuf,lpdata->lpData+sendlen,sizeof(pBuf));
-->
memcpy(pBuf,lpdata->lpData+sendlen,iSize);
??

------解决方案--------------------
跟踪iSize,sendlen的值,这两个坏蛋极可能失控了:)
------解决方案--------------------
探讨
跟踪iSize,sendlen的值,这两个坏蛋极可能失控了:)

------解决方案--------------------
memcpy(pBuf,lpdata->lpData+sendlen,iSize);
你这里sendlen在变化,但iSize没变,当然就越了个界了
------解决方案--------------------
sizeof(pBuf) -> LPBYTE pBuf ? 指针 4 字节 

lpdata->lpData+sendlen 如果lpData是内存起始地址,sendlen是不是偏移量,也就是说实际拷贝的是从lpdata->lpData开始处偏移sendlen的个字节后的位置,拷贝4个字节