当一个对象试图访问它的某个属性时,程序是否可能发送Segfault

Is it possible that a program sends a Segfault whenever an object tries to access one of its attributes?

本文关键字:是否 程序 Segfault 属性 一个对象 访问      更新时间:2023-10-16

我有一个具有bool属性的类,名为global

当我从外部调用它的一个方法时,出现了分段错误。

基本上,我调用这个方法。这个方法在内部调用另一个方法,该方法调用另一种方法,依此类推(这是因为每个方法都做一些稍微复杂的事情)。

在方法调用链的末端,有一个方法检查属性global,并根据其内容执行不同的操作。

使用gdb,我发现在最后一种方法中,分割错误是在精确的if (global) {线上产生的。我尝试在方法调用链中将此条件检查移到更高的位置(以便在方法链中继续深入之前检查条件),但结果没有改变(换句话说,无论它放在哪里,if (global) {总是会导致分段错误`)。

检查属性global是否可能导致分段故障?这意味着什么?是什么原因造成的?

我正在g++ -std=c++11 -Wall -Wextra -pedantic -g中编译usin。

分段错误(SIGSEGV)意味着您的程序试图访问其地址空间之外的内存。这通常是由于取消引用未初始化的指针或指向生存期已结束的对象的指针、读取堆栈末尾或类似情况而导致的。

相关文章: