2

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

我创建了一个大型 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
}
4

2 回答 2

21
_buffer = new char(7931880);

这是一个指向单个字符的指针。获取数组使用

_buffer = new char[7931880];

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

于 2013-01-16T18:27:25.933 回答
7

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

于 2013-01-16T18:26:47.740 回答