1
剛開始使用C++。從文件讀取時發生C++訪問衝突
我從二進制文件讀取時遇到訪問衝突錯誤。這裏所涉及的類:
class Staff { //base class
public:
Staff() {}
virtual ~Staff{}
}
一個派生類:
class Scheduler : public Staff {
public:
Scheduler() {}
//no destructor defined
}
然後在代碼中使用這些類:
ifstream in("Scheduler.dat", ios::in | ios::binary);
Scheduler s;
in.read(reinterpret_cast<char *>(&s), sizeof(Scheduler));
我打的讀聲明的那一刻,訪問衝突異常觸發器,VS2013指向Staff類中的虛擬析構函數。
是否因爲我沒有在類Scheduler中顯式創建析構函數?或者是由其他事物引起的?
我可以將調度程序對象寫入該文件,但它只發生在讀取 – user2990428 2014-10-28 10:17:40
@ user2990428未定義d行爲並不一定意味着你的程序會崩潰。 'Scheduler'的vtable是在運行時設置的,每次運行程序時都不太一樣。 – user657267 2014-10-28 10:20:08