memcpy((void *)&info,*lpBuffer,nSize);info是个结构
*lpBuffer 是二进制数据指针
nSize是info的结构大小如何判断info的数据都是自*lpBuffer中拷贝来的而没有拷贝到*lpBuffer数据之外?

解决方案 »

  1.   

    怎么可能拷贝lpBuffer外的数据呢?
      

  2.   

    给lpBuffer跗值是一下不就知道了
      

  3.   

    是啊,可以用nsize控制拷贝多少的啊,怎么会拷贝出界?如果你只是自己想看看有没有拷贝正确,可以跟踪内存看下一般都不会,我跟踪过挺多次
      

  4.   


    int memcmp(
       const void *buf1,
       const void *buf2,
       size_t count
    );逐字节比较info和lpBuffer中的内容,判断是否相同
      

  5.   

    而且
    strlen(*lpBuffer)得到的字节数与实际的不等如:  *lpBuffer = "123456";
         此*lpBuffer的实际长度是480个     但是strlen得到的只有6个
      

  6.   

    strlen(lpBuffer)
    干吗老喜欢把*带上
      

  7.   

    如: *lpBuffer = "123456";
    此*lpBuffer的实际长度是480个
    但是strlen得到的只有6个
    不知道你在说什么
      

  8.   

    lpBuffer指向的是你的内存区域,*lpBuffer是你的内存区域的内容。你赋了个123456,当然得到的大小是6了。
      

  9.   

    LPSTR *lpBuffer*lpBuffer是一个二进制数据这个内存的内容是从数据库中读出来的,实际长度是480只是前面的是个字符串,所以可以看到是123456
      

  10.   

    info是个结构
    *lpBuffer 是二进制数据指针
    nSize是info的结构大小这个在一开始就写了啊如果是文本格式的char *就没有这个帖子了啊就是因为是二进制格式的,所以才来问这个问题的啊
      

  11.   

    如果memcpy不能解决这个问题那么还可以使用什么函数呢来确保拷贝二进制数据时不到数据范围之外
      

  12.   

    memcpy 没问题,关键是你自己把大小没弄清楚