Memcpy сбой

У меня очень простая рутина (по крайней мере, должна быть простой)

Я создаю большой массив символов и копирую в него данные по мере их перемещения. Примерно после третьей итерации приложение вылетает.

сначала создайте большой буфер

_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

Решение

_buffer = new char(7931880);

Это указатель на ОДИН символ. Чтобы получить массив используйте

_buffer = new char[7931880];

И включите предупреждения компилятора, чтобы обнаружить переполнение.

21

Другие решения

Вы динамически выделяете один char со значением 7931880, Делая предположение, что ваш буфер должен быть чуть больше одного char (не большая часть буфера), возможно, вы искали _buffer = new char[7931880];, Это выделит 7931880 chars.

7

По вопросам рекламы [email protected]