memcpy c ++ - 崩溃

时间:2013-01-16 18:24:37

标签: c++ memcpy

我有一个非常简单的例程(至少应该很简单)

我创建了一个大的char数组,当我接收它时,我正在将数据复制到它。大约第三次迭代后,应用程序崩溃了。

首先创建一个大缓冲区

_buffer = new char(7931880);

...

void writeData(char* newData,size_t size)
{
  memcpy(_buffer,newData,size); //this call succeeds the first 4 times then fails bytes received
 _buffer+=size;                 //(size) is never larger than 16000
}

2 个答案:

答案 0 :(得分:21)

_buffer = new char(7931880);

这是指向SINGLE字符的指针。要使用数组

_buffer = new char[7931880];

打开编译器警告以检测溢出。

答案 1 :(得分:7)

您正在动态分配值char的单个7931880。假设您的缓冲区应该比单个char(不是缓冲区)多一点,也许您正在寻找_buffer = new char[7931880];。这将分配7931880 char s。