c++ - 分段错误已解决,但无法弄清楚原因
问题描述
头文件包含:
class WorkScene;
class Mesh;
class Director
{
private:
WorkScene *scene = nullptr; // owner
Mesh *selected_mesh = nullptr; // borrower
public:
Director(WorkScene *scene);
~Director();
const Mesh *get_selected_mesh() const;
Mesh *get_selected_mesh();
};
该get_selected_mesh
方法的实现是:
cvas::p3de::Mesh *cvas::p3de::Director::get_selected_mesh()
{
return selected_mesh;
}
但是我在这一行收到分段错误:
分段错误错误文本为:
下级停止了,因为它收到了来自操作系统的信号。
信号名称:SIGSEGV
信号含义:分段错误
像这样修改代码时解决了分段错误:
cvas::p3de::Mesh *cvas::p3de::Director::get_selected_mesh()
{
//return selected_mesh;
return nullptr;
}
好吧,考虑到在头文件中,标识符selected_mesh
已经被声明/初始化为nullptr
. 谁能给我一个提示?
解决方案
你似乎有一个Director*
,nullptr
然后你调用get_selected_mesh
那个指针。这是未定义的行为。
如果你只是return nullptr
编译器不在乎,只是返回nullptr
. 如果您return selected_mesh
的编译器事实上需要执行return this->selected_mesh
. 这取消了无效的引用this
,从而取消了访问冲突。
错误出现在您未显示的代码中。
推荐阅读
- reactjs - 可以使用 FLUX 模式本身调用 React 吗?
- javascript - 我的 javascript 有时仅适用于虚拟主机
- r - R:如何用不同的表达式总结几个变量,然后用一个表达式总结其余的
- javadoc - 由于我的测试数据中的Chinees char,无法创建Java dic
- post - 如何通过 Business Central 中的 REST/OData API 为项目设置任意属性
- excel - 为每个域创建 CSV
- python - Google Roads API - HTTP 错误 403:禁止
- robotframework - 机器人框架 - 从二维数组中删除重复项
- ellipse - 检测线或抛物线/椭圆并将其拟合到 2d 点云数据
- verilog - Verilog Testbench 无法编译 - 多个定义