C 矢量分割故障
c++ vector segmentation fault
我正在尝试在Amazon Linux EC2实例上运行我的C 程序,并在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个字节的无符号字符。seg_byte
这里可能是' 0',但是即使我用'a'替换seg_byte
,或使用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
如果我编写一个仅运行A用于循环填充vector<unsigned char>
的小test.cpp
文件,我没有任何错误。
在MacOS和Ubuntu
上运行良好的代码中获得分割故障
如果您使用地址消毒剂构建程序(您应该始终习惯于(,它将立即告诉您 关于缓冲区的流失。
用地址消毒剂建造非常容易:
g++ -fsanitize=address -g test.cpp
相关文章:
- 分割故障C++矩阵
- C ,二进制树的高度,而不是检查我的子树是否为空,而是在检查我的子树是否是叶子节点.抛出分割故障
- 我正在为此代码分割故障
- 在执行strcpy时获取分割故障错误
- 空隙指针分割故障
- Xcode会产生分割故障,而不是例外
- OPENCV C 中的分割故障误差
- 分割故障:核心倾倒C 矢量对字符串:
- C 2D数组导致分割故障(核心倾倒)
- 分割故障/错误读数变量-C 列表
- DLSYM导致分割故障
- 使用C 中的操作员删除的分割故障
- 使用Linux X64下的Libmozjs-52(SpidermonKey)进行分割故障
- 使用长变量时分割故障(11)错误
- C - 返回字符串时的分割故障
- 创建VertexArray时的分割故障
- 向量分割故障的向量
- 从std :: fileSystem ::路径对象的类中退出时的分割故障
- C 矢量分割故障
- 基于向量的数据格式的分割故障误差