1

これは本当に私を困惑させました。

さまざまなメンバー変数の型(QString、int、bool)を組み合わせた、1ダースほどのゲッターとセッターが定義されたクラスがあります。現在、いくつかの追加データ用に新しい関数と変数のセットを追加していますが、すべてが正常にビルドされますが、コードを実行すると、そのクラスの新しいインスタンスがとして作成され、boost::shared_ptrすぐにでセグメンテーション違反が発生しin QBasicAtomicInt::deref (this=0x0) at /usr/local/Trolltech/Qt-4.8.1/include/QtCore/qatomic_i386.h:132ます。

さらに進めることもできます。ゲッターと変数だけを追加すると、セグメンテーション違反は発生しなくなります。変数をQStringではなくboolに変更すると機能しますが、std :: stringに変更すると、同じ場所でセグメンテーション違反が発生します。これは、変数がQtではなくなったためさらに奇妙なことです。 。クラスの新しいインスタンスを作成してboost::shared_ptrも問題ありませんが、まったく問題ありません。関数は、クラスの内部または外部ではまだ使用されていません。

4

2 に答える 2

2

私も同様の問題を抱えていました。

クラスに変数を作成するだけで、使用しようとするとセグメンテーション違反が発生し、夢中になりました。

私の環境も似ています。LinuxでQtを使用するソフトウェアは、C++言語で記述します。

だから私はプロジェクトをきれいにして再構築し、それからうまくいきました!

StackOverflowが節約します!

于 2017-09-04T08:45:41.090 に答える
1

ディレクトリをゴミ箱に移動し、コードを再プルして再構築すると、機能します。理由はわかりませんが、クリーンプロセスで何かが適切にクリーンアップされていなかったと思います。

于 2013-02-06T20:25:45.013 に答える