对象内部结构:解决分割错误问题
Structures within objects: solving segmentation fault issues
当试图从类函数内访问类成员(这是一个结构)时,我遇到了分段错误的问题。我想我在某个地方说错了,但我看不出问题是什么。到目前为止,我已经尝试了很多不同的方法,但都没有成功。如有任何帮助,我将不胜感激。
program.h:
struct ButtonState {
int analog_pin;
};
class LEDGarden {
public:
ButtonState *the_state;
LEDGarden(void) {}
void init(void);
void initButtons(void);
};
program.cpp:
#include "program.h"
void LEDGarden::init(void) {
ButtonState *the_state = new ButtonState();
the_state->analog_pin = 5;
initButtons();
}
void LEDGarden::initButtons(void) {
// The problem happens here.
the_state->analog_pin = 5;
}
int main() {
LEDGarden garden;
garden.init();
}
当我试图在函数initButtons
的结构中进行分配时,会发生分割故障。我不知道是什么问题。
注意,当我使用gcc时,只要我不使用-O2
标志,这个程序就可以正常工作。使用clang,不管编译标志是什么,我都会得到段错误。
您的LEDGarden
有一个指向ButtonState
的指针,您从未设置过。
init
方法用相同名称的局部遮蔽成员变量(所以当你使用它时,成员变量不会被设置)。试着
void LEDGarden::init(void) {
this->the_state = new ButtonState();
the_state->analog_pin = 5;
initButtons();
}
你应该做的可能是摆脱init()
,并使其成为一个构造函数。
不同的行为可能取决于成员变量被设置为null或随机内存位置(可能是"好"或"坏",但永远不会是"正确";-)
相关文章:
- C++映射分割错误(核心转储)
- 由cin中的字符串中未捕获空白引起的分割错误
- 删除映射和分割错误中的一个过去结束元素
- 在指向函数中读取变量时出现分割错误
- 在链表中的第 n 位插入显示分割错误
- 较高值 n 的分割错误(例如 n=999997)
- 尝试通过memcpy复制大尺寸浮点向量时的分割错误
- 分割错误:向量中的擦除功能
- 向量向量的分割错误
- 我在C++中编写了一个方法来打印树类的预序,但它显示了分割错误
- C ++分割错误,为什么使用"long long"我没有得到答案?
- 在尝试使用递归查找集合子集的总数时,我遇到了分割错误
- 分割错误 11:尝试使用 cin 输入 B[1] 时
- 集合布局上的 Qt 分割错误
- 高达20亿的筛子会产生分割错误
- 对向量使用推回函数时的分割错误
- 绘制精灵会导致分割错误
- 将矢量的整数内容打印为字符串会导致分割错误
- 分割错误:使用向量时为 11 c++
- 结构的分割错误错误