我在嘗試從類函數內訪問類成員(結構)時遇到了分段錯誤問題。我假設我在某處宣佈這個錯誤,但我看不出問題是什麼。到目前爲止,我嘗試了很多變化,但沒有運氣。任何幫助將不勝感激。對象中的結構:解決分段錯誤問題
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
在結構中分配的分割發生故障。問題在哪裏,我感到非常失望。
請注意,只要我不使用-O2
標誌,使用gcc時此程序對我來說工作正常。使用clang,無論編譯標誌如何,我都會得到segfault。
你有一個令人信服的存儲指針而不是對象的原因? – juanchopanza