繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM