返回信息流最近遇到一个问题,一直想不到什么原因,有一个结构体
RangeData是一个结构体,结构体应该是默认定义的
typedef std::vector<Eigen::Vector3f> PointCloud;
struct RangeData {
Eigen::Vector3f origin;
PointCloud returns;
PointCloud misses;
};
gdb回溯的信息是:
Thread 1 "uos_lidar_frame" received signal SIGSEGV, Segmentation fault.
__GI___libc_free (mem=0xc01ab08e06aecb71) at malloc.c:2951
2951 malloc.c: 没有那个文件或目录.
(gdb) bt
#0 __GI___libc_free (mem=0xc01ab08e06aecb71) at malloc.c:2951
#1 0x00000000005cc782 in:RangeData::~RangeData() ()
#2 0x00007ffff78c1eee in match() ()
match函数里面声明RangeData range_data{origin, {}, {}};
(origin 是一个(0,0,0)的Eigen::Vector3f)
用的时候是数据往range_data的returns里面push_back
match函数是封装在一个so库内被调用的
就是最后函数结束的时候match()结束的时候结构体的析构就崩了。
期间没有用到指针指向它
也尝试过不往里面push任何数据还是析构失败(就是声明完就结束match函数也析构失败)。
这是一条镜像帖。来源:北邮人论坛 / cpp / #97114同步于 2018/1/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
【问题】结构体的析构崩溃问题
kongyue08
2018/1/13镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。