作者rockwalking (技安)
看板EE_DSnP
標題Re: [問題] 碰到一個很奇怪的問題
時間Sat Jun 6 16:36:57 2009
※ 引述《rockwalking (技安)》之銘言:
: 目前C17.cir執行沒問題
: 但碰到larger的檔案就出錯
: 以下是兩筆對照
: file is open
: option is:2
: .cir
: set name :C17
: option is:6
: .input
: .input find
: makepair string is :1GAT
: CirGate constructor 1GATis: 0
: creat a PIobj
: ...
: file is open
: option is:2
: .cir
: set name :C499
: 程式記憶體區段錯誤
: 我完全找不到哪裡出錯 他們第一行到第二行格式都一樣阿
: 然後我試著把C499 .input 後面刪掉數個input 就可以執行 請問這到底是什麼問題?
還是發生同樣問題 在creat Piobj時候就crush 檢查data member確實都有initialize
#include <cassert>
class CirGate;
using namespace std;
class CirGate
{
public:
CirGate(const string& a , size_t b ):_name(a),_mark(false),_faninList(b)
{cout<<"CirGate constructor "<<_name<<"is: "<<b<<endl;}
virtual ~CirGate() {}
void printSize() {cout<<_faninList.size()<<endl;}
void printName() const {cout<<_name<<endl;}
size_t getMark() {return _mark;}
void dfsTraversal (vector<CirGate*>& dfsList)
{
cout<<"in CirGate's dfsTraversal :";
printName();
vector<CirGate*>::iterator mi;
for(mi = _faninList.begin();mi!=_faninList.end();++mi)
{(*mi)->printName();
if(!((*mi)->isMarked()))
{
(*mi)->setMark();
(*mi)->dfsTraversal(dfsList);
}
}
dfsList.push_back(this);
}
bool isMarked() {return _mark;}
void setMark() {_mark= true;}
void resetMark() {_mark = false;}
bool setFanIn(CirGate* pos) {cout<<_name<<"'s _faninList add ";pos->printName();_faninList.push_back(pos);}
private:
string _name;
vector<CirGate*> _faninList;
bool _mark;
};
class CirPiGate: public CirGate
{
public:
CirPiGate(const string& name = " ",size_t b = 0):CirGate(name,b){cout<<"creat a Piobj"<<endl;}
~CirPiGate() {}
};
....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.25.110
1F:推 ric2k1:用 gdb or ddd 看看 crash 在哪裡... 06/06 16:51
2F:→ rockwalking:好不想開阿ˊˋ 也只好這樣了 06/06 17:09