【BUG记录】PCL中passThrough模块中断,aligned_free报错

项目场景:

在visual studio中使用PCL中的passthrough模块对点云做直通滤波


问题描述

调用passthrough代码如下:

//创建滤波器对象
pcl::PassThrough<pcl::PointXYZ> pass;
//设置需要过滤的字段
pass.setInputCloud(cloud);
//设置范围
pass.setFilterFieldName("z");
pass.setFilterLimits(-10.0, 1.0);
//pass.setFilterLimitsNegative (true);
pass.filter(*cloud);
pcl::PassThrough<pcl::PointXYZ> pass2;
//设置需要过滤的字段
pass2.setInputCloud(cloud2);
//设置范围
pass2.setFilterFieldName("z");
pass2.setFilterLimits(-10.0, 1.0);
pass2.filter(*cloud2);

运行之后的中断在这个函数里:

/** \internal Frees memory allocated with aligned_malloc. */
EIGEN_DEVICE_FUNC inline void aligned_free(void *ptr)
{
  #if (EIGEN_DEFAULT_ALIGN_BYTES==0) || EIGEN_MALLOC_ALREADY_ALIGNED

    EIGEN_USING_STD(free)
    free(ptr);

  #else
    handmade_aligned_free(ptr);
  #endif
}

原因分析:

运行断在释放指针处,可能是double free了,但是因为这段代码是官方示例里的,使用的时候没有做修改,因此造成double free的原因不明


解决方案:

打开VS的项目属性,C/C++ --> 代码生成 --> 启用增强指令集 ,选择高级矢量拓展 AVX ,然后重新生成项目,问题就解决了,原理待更新。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值