У меня очень простая рутина (по крайней мере, должна быть простой)
Я создаю большой массив символов и копирую в него данные по мере их перемещения. Примерно после третьей итерации приложение вылетает.
сначала создайте большой буфер
_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
}
_buffer = new char(7931880);
Это указатель на ОДИН символ. Чтобы получить массив используйте
_buffer = new char[7931880];
И включите предупреждения компилятора, чтобы обнаружить переполнение.
Вы динамически выделяете один char
со значением 7931880
, Делая предположение, что ваш буфер должен быть чуть больше одного char
(не большая часть буфера), возможно, вы искали _buffer = new char[7931880];
, Это выделит 7931880 char
s.