运行C++代码时出现分段错误



运行以下代码时出现分段错误:

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];

分段故障消失。有人能帮我找出问题的原因吗。

分割失败只是意味着没有准备内存。所以你的元素之一

  • 结果
  • resultin
  • 输出_刻度

无法访问,因为在此位置无法访问有效内存。

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]);
}

相关内容

  • 没有找到相关文章

最新更新