Я пытаюсь запустить свою программу c ++ на экземпляре amazon linux ec2 и получаю ошибку сегментации в фрагменте кода, который отлично работает на MacOS и Ubuntu.Вот отрывок кода:
vector<unsigned char> header(8);
bool bool_byte[8];
unsigned char seg_byte;
int byte_num = 0;
for(int i = 0; i < 32; i++) {
bool_byte[i] = snb[i];
if(i % 8 == 7) {
seg_byte = to_byte(bool_byte);
byte_num = (i + 1)/8;
cout << "byte_num minus one is " << to_string(byte_num - 1) << endl;
cout << "vector size " << to_string(header.size()) << endl;
header[byte_num - 1] = seg_byte;
}
}
Я преобразую 32-битный логический массив в 4 байта типа unsigned char.seg_byte
здесь может быть '\ 0', но даже если я заменю seg_byte
на 'a' или использую header.reserve(8)
и использую push_back
вместо индекса массива, я все равно получу ошибку сегментации.Я также попытался использовать vector<char>
и приведение к char
и все еще получаю ошибку сегментации.Операторы cout
выводят это на печать.
byte_num minus one is 0
vector size 8
byte_num minus one is 1
vector size 139991841770280
Segmentation fault
Если я напишу небольшой test.cpp
файл, который выполняет только цикл for, заполняющий vector<unsigned char>
, я не получаю никаких ошибок.