The
int arraySize = 640000;
должно быть const
в стандартном C ++. g ++ допускает использование массивов переменной длины в качестве расширения языка C99. Лучше отключить это расширение. : -)
std::vector<unsigned char> vector_buffer;
unsigned char buffer[arraySize];
ОК, если arraySize
равно const
, но не будет компилироваться, например, Visual C ++ с вашим оригинальным кодом.
populateArray(&buffer);
Скорее всего, это должно быть populateArray(buffer)
, если только у вас нет действительно странного объявления populateArray
.
for(int i = 0; i < arraySize; i++)
cout << buffer[i]; // this prints out data
Выше приведены данные без промежутков между элементами. Лучше добавить интервал. Или переводы строк.
std::copy ( buffer, buffer + arraySize, std::back_inserter(vector_buffer));
Лучше просто использовать assign
метод std:.vector
, например vector_buffer.assign( buffer, buffer + arraySize )
.
for(int i = 0; i < arraySize; i++)
cout << vector_buffer[i]; // this prints out different data
Опять же, здесь отображаются элементы без промежутков между ними.
Очевидная проблема все еще существует, когда вы исправили эти вещи?
Если это так, то, пожалуйста, опубликуйте также вашу populateArray
функцию.