无法删除旧的指针(segfault)
unable to delete an old pointer (segfault)
我很困惑为什么其中一个会起作用,而另一个会效法。我正在尝试启用相机控制器的切换,在这两种情况下,(主要)复制构造函数都成功了,第一个分支是在 delete
上进行的,尽管
if (type == controllers::Camera::Type::Arcball) {
controllers::Camera *old_cam = mController;
mController = new controllers::ArcballCamera(*old_cam);
delete old_cam;//!!! this segfaults
return true;
}
else if (type == controllers::Camera::Type::Fly) {
controllers::Camera *old_cam = mController;
mController = new controllers::FlyCamera(mGLFWWindow, *old_cam);
delete old_cam;
return true;
}
有人对这里可能发生的事情有建议吗?第二个分支正常工作(可以delete old_cam;
)。
i无法正确关闭FlyCamera
中的线程,即捕获的 this
,这是最终发生的segfault的地方。谢谢@aschepler指出的是应该显而易见的,从一个可以删除的事实中,灾难是应该显而易见的问题,而另一个则不能!
相关文章:
- Segfault如果更改派生类的指针值
- 通过嵌套的lambda中的值捕获指针导致Segfault
- 将指针存储到SQLITE3数据库中的类别抛出segfault
- 尽管文件指针正确,但在fclose()期间的segfault
- C Segfault在指针比较上
- 无法删除旧的指针(segfault)
- 当删除NULL指针(C/C )时,可以保证SegFault
- 删除指向流的类成员指针时出现Segfault
- 调整指针segfault的向量大小
- 简单的引用变量赋值导致对象的全局指针出现segfault
- 尝试从插入的.dll中的指针读取字符串时出现Segfault
- push_back对象的指针会导致segfault
- 指针,将参数传递给main和segfault
- 使用共享指针访问单例子类时的SEGFAULT
- 一个未初始化的指针是如何在cin中创建SegFault的
- 可以在不取消引用的情况下递增指针,但仍然存在segfault或具有其他(未)定义的恶意
- 在C++中使用矢量中的指针后的Segfault
- 通过多个函数传递指针并获取segfault
- 将segfault转换为空指针
- c++:初始化指针队列时获取segfault