2

私は非常に単純なルーチンを持っています (少なくとも単純であるべきです)

大きな char 配列を作成し、データを移動しながらデータをコピーしています。約 3 回目の繰り返しの後、アプリがクラッシュします。

最初に大きなバッファを作成します

_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);

これは、SINGLE 文字へのポインターです。配列を取得するには

_buffer = new char[7931880];

そして、コンパイラの警告をオンにして、オーバーフローを検出します。

于 2013-01-16T18:27:25.933 に答える
7

char値を使用して単一を動的に割り当てています7931880。バッファが単一より少し多いchar(バッファの多くではない)必要があると仮定すると、おそらくあなたはを探していました_buffer = new char[7931880];。これにより、7931880char秒が割り当てられます。

于 2013-01-16T18:26:47.740 に答える