作者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