首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

vc malloc拷贝有关问题

2013-11-26 
vc malloc拷贝问题我现在申请了2块空间buf (ULONG *) malloc(0x400000)big_buf (ULONG *) malloc(0x4

vc malloc拷贝问题
我现在申请了2块空间
buf = (ULONG *) malloc(0x400000);
big_buf = (ULONG *) malloc(0x400000*40);

buf是ReadFile(hDevice, buf, 0x80000, &nRead, NULL);读取的
我现在要读取40次然后放到big_buf 中,用
memcpy(big_buf ,buf ,strlen(buf));

我这样做:

for(int i-0;i<40;i++)
{
  memcpy(big_buf+i*strlen(buf) ,buf ,strlen(buf));
}
这样可不可以? 我现在搞不清楚
big_buf每次应该加多长?

[解决办法]


unsigned int nRead ; 
char *p = (char *)big_buf;
for(int i = 0 ; i < 40 ; ++i)
{
   //buf 只有0x400000 你却要读入 0x800000,这会溢出的。  
   if(ReadFile(hDevice, buf, 0x40000, &nRead, NULL)) 
   {
      memcpy(p ,buf ,nRead );
      p += nRead ;  
      if(nRead < 0x40000)
        break ; 
   }
   else
     break ;
}   
*p = 0 ; //置字符结束符,
nRead = p - big_buf ; //读入的总字节数
//因为它  big_buf = (ULONG *) malloc(0x400000*40+1); bug_buf需要多分配1字节。

热点排行