クラス ヘッダー (class.h) と実装 (class.cpp) があります。class.h で宣言されたいくつかのメンバー変数があり、class.cpp で問題なく使用しています。class.h にさらに 3 つのメンバー変数を追加しようとしています。
double a;
double b;
double c;
次のように、class.cpp の残りのメンバー変数と同様に、これら 3 人を初期化しています。
Class::Class()
{
a = 0;
b = 0;
c = 0;
//constructor body
}
このコードは正常にコンパイルされますが、実行時にセグメンテーション違反が発生します。Valgrind は、行 "b = 0;" にサイズ 8 バイトの無効な書き込みがあると言っています。a、b、cが使用されている他の場所。これら 3 つの変数を削除しても問題はありません。ここで何が問題になる可能性がありますか?プログラムに使用できる十分なメモリがあります。ありがとうございました!
編集:ここにクラス定義を追加しました:
class AWidget: public QGraphicsView
{
Q_OBJECT
public:
AWidget( QWidget * parent = 0 );
virtual ~AWidget();
//public functions
private:
Q_DISABLE_COPY ( AlignmentWidget )
void updateWidget();
void updateArrowsVisibility();
void updateAimLineItemVisibility();
double x;
double y;
double z;
QGraphicsScene *scene;
QGraphicsPixmapItem *item;
QGraphicsPixmapItem *aErrorItem;
QGraphicsEllipseItem *circle;
QGraphicsLineItem *LineItem0;
QGraphicsLineItem *LineItem1;
QGraphicsLineItem *LineItem2;
QGraphicsLineItem *LineItem3;
QGraphicsLineItem *LineItem4;
double a;
double b;
double c;
};
AWidget::AWidget(QWidget *parent)
scene( 0 ),
item( 0 ),
aErrorItem( 0 ),
circle(0),
LineItem0( 0 ),
LineItem1(0),
LineItem2(0),
LineItem3(0),
LineItem4(0)
{
//init stuff like scene = new QGraphicsScene(); etc..
a=0;
b=0;
c=0;
}