关于视觉SLAM十四讲第九章0.2中在执行run_vo时出现Segmentation fault (core dumped)时解决方法

在执行视觉SLAM教程时遇到Segmentation fault (core dumped)问题,通过gdb调试发现与cv::FileStorage相关。错误源于Config类的静态成员config_。解决方案是在setParameterFile函数中添加静态cv::FileStorage对象,并在CMakeLists.txt中移除"-march=native -O3"优化选项。修改后的代码避免了因函数局部变量销毁导致的内存问题。
摘要由CSDN通过智能技术生成

d在视觉SLAM十四讲第九章0.2中,执行run_vo时出现了Segmentation fault (core dumped)错误,通过gdb调试发现和cv::FileStorage有关(可能您的错误源和我的不同,在网上发现有不一样的地方)。通过对run_vo中的语句定位(屏蔽掉所有的语句,再逐句试试)发现是和config.h文件中的config类定义有关。在Config类定义如下:

class Config
{
private:
    static std::shared_ptr<Config> config_; 
    cv::FileStorage file_;
    
    Config () {} // private constructor makes a singleton
public:
    ~Config();  // close the file when deconstructing 
    
    // set a new config file 
    static void setParameterFile( const std::string& filename ); 
    
    // access the parameter values
    template< typename T >
    static T get( const std::string& key )
    {
        return T( Config::config_->file_[key] );
    }
};

此类中的config_是静态指针,所以所有的Config类的对象都可以共享此指针。但通过使用此类中的setParameterFile函

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值