+ -
当前位置:首页 → 问答吧 → 请教有关char *XX = new char[] 的问题

请教有关char *XX = new char[] 的问题

时间:2011-12-12

来源:互联网

大大好:
 我撰写了一小段读取RS232资料的程式...
 我先检查RS232 Buffer Area是否有资料...
 若有的话,就new一个char array...
 并将Buffer Area的资料读取至char array中...
 然后再将char array memcpy 至最终的array 即In_Buffer Array
 但是..我发现在不断读取的过程中...
 会跳出“Invalid pointer operation"的错误讯息...
 目前是将char *xx = new char[??]
 改变成char xx[100]
 程式就不会在跳错误讯息了...
 不过,我还是想知道一开始的写法?哪写错了?
 导致了那样的错误讯息?好难懂

 =====有问题的===================================================
  if(Com->Enabled)
  {
  int iBuffer_Count(Com->InCount); //确认RS232 Buffer Area是否有资料
  if(iBuffer_Count>0)
  {
  char *cBuffer = new char[iBuffer_Count];  
  Com->Read(cBuffer,iBuffer_Count,NULL); //读取RS232 Buffer Area至cBuffer
  memcpy(&In_Buffer[iIn_Buffer_Len],cBuffer,iBuffer_Count); //memcpy
  iIn_Buffer_Len = iIn_Buffer_Len + iBuffer_Count;
  delete [] cBuffer;
  }
  }



 =====OK的===================================================
  if(Com->Enabled)
  {
  int iBuffer_Count(Com->InCount); //确认RS232 Buffer Area是否有资料
  if(iBuffer_Count>0)
  {
  char cBuffer「100];  
  Com->Read(cBuffer,iBuffer_Count,NULL); //读取RS232 Buffer Area至cBuffer
  memcpy(&In_Buffer[iIn_Buffer_Len],cBuffer,iBuffer_Count); //memcpy
  iIn_Buffer_Len = iIn_Buffer_Len + iBuffer_Count;
  }
  }

作者: qqmts   发布时间: 2011-12-12

new char[iBuffer_Count+1]
试试吧:)

作者: cgl_lgs   发布时间: 2011-12-12

引用 1 楼 cgl_lgs 的回复:

new char[iBuffer_Count+1]
试试吧:)


可以向您请教
+1的原因是??
感谢您

作者: qqmts   发布时间: 2011-12-12