[英]The segmentation fault is resolved, but cannot figure out why
頭文件包含:
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
的事實,我無法弄清楚為什么在修改上述代碼時解決了分段錯誤。 誰能給我一個提示?
您似乎有一個為nullptr
的Director*
,然后在該指針上調用get_selected_mesh
。 這是未定義的行為。
在只return nullptr
的情況下,編譯器不在乎,而僅返回nullptr
。 在return selected_mesh
的情況下,編譯器實際上需要return this->selected_mesh
。 這將取消引用無效的this
,從而取消訪問沖突。
錯誤出現在您未顯示的代碼中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.