[英]segmentation fault while running C++ code
运行以下代码时出现分段错误:
void convert_fix2float(vector<int8_t*>& resultin, vector<vector<float>>& resultout, const float* output_scale){
cout<<"entering fix to float"<<endl;
for (size_t ii = 0; ii < 3; ii++) {
size_t width = shapes.outTensorList[ii].width;
size_t height = shapes.outTensorList[ii].height;
size_t channel = shapes.outTensorList[ii].channel;
size_t sizeOut = channel * width * height;
for (size_t j = 0; j < sizeOut; j++){
resultout[ii][j] = resultin[ii][j] * output_scale[ii];
}
}
cout<<"exiting fix to float"<<endl;
}
如果我注释掉声明
resultout[ii][j] = resultin[ii][j] * output_scale[ii];
分段错误消失。 有人可以帮我确定问题的原因。
Segmentation failt 只是意味着没有准备好 memory。 所以你的元素之一
无法访问,因为在此 position 无法访问有效的 memory。
std::vector
中的运算operator[]()
不能创建新元素。 要创建新元素,您可以使用方法insert()
:
resultout.insert(std::vector<float>())
for (size_t j = 0; j < sizeOut; j++)
{
resultout[ii].insert(resultin[ii][j] * output_scale[ii]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.