1

ポインタが0であるかどうかをチェックするときに、この厄介なセグメンテーション違反で立ち往生しています。これは問題のあるコードです。

bool egammaMVACalib::checkTree()
{
   // Not a TChain
   cout << "a" << endl;
   assert(m_tree);      // crash on line 751 (this one)
   cout << "B" << endl;

m_treeegammaMVACalibはタイプのデータメンバーであるため、セグメンテーション違反が発生TTree*する理由がよくわかりません。assert(m_tree)これは、スタックトレースを含む出力です

a
19:07:25 30574 Wrk-0.9 | *** Break ***: segmentation violation

===========================================================
There was a crash.
This is the entire stack trace of all threads:
===========================================================
#0  0x000000361869a4d5 in waitpid () from /lib64/libc.so.6
#1  0x000000361863c481 in do_system () from /lib64/libc.so.6
#2  0x00002ac5099cb322 in TUnixSystem::StackTrace() ()
    from /usr/local/proof/root/lib/libCore.so
#3  0x00002ac5099c7fea in TUnixSystem::DispatchSignals(ESignals) ()
    from /usr/local/proof/root/lib/libCore.so
#4  <signal handler called>
#5  egammaMVACalib::checkTree (this=0x0) at ../Root/egammaMVACalib.cxx:751
#6  0x00002ac5117e5563 in egammaMVACalib::LoadVariables (this=0x1, index=0)
    at ../Root/egammaMVACalib.cxx:492
4

2 に答える 2

8

フレーム#5を見ると、thisポインタはnullです。つまり、問題はそこから始まったということです。アサーションでのセグメンテーション違反は、単にその反省です!

于 2012-05-11T17:24:10.050 に答える
2

手がかりはここにあります:

#5  egammaMVACalib::checkTree (this=0x0) at ../Root/egammaMVACalib.cxx:751 

this = 0は、オブジェクトがnullであることを意味します

于 2012-05-11T17:25:23.197 に答える