我在調用程序的析構函數時遇到了一些問題。我有這些類:C++:刪除指針陣列時出錯
myModule
是指針數組的基類。myModule_in
是一個代表具有輸入端口的模塊的子類(有一個myModule_out
和myModule_inout
,因爲它不是必需的,所以不會顯示在這裏)。moduleC
是輸入端口模塊之一(moduleA
和moduleB
是myModule_out
和myModule_inout
)。
Mymodule中:
class myModule
{
public:
myPort* secondary_ins[NUM];
myModule() {}
virtual ~myModule()
{
for(int i=0; i<NUM; i++)
{
if(secondary_ins[i])
delete secondary_ins[i];
}
}
virtual void connect(myModule &m) = 0;
};
myModule_in:
class myModule_in : public myModule
{
public:
virtual ~myModule_in() {}
virtual void connect(myModule &m)
{
secondary_ins[ins] = new myPort();
...
}
};
moduleC:
class moduleC : public myModule_in
{
public:
moduleC();
~moduleC() {}
void connect_modules() {...}
};
主:
int main(...)
{
moduleA mA;
moduleB mB;
moduleC mC;
...
mA.connect(mB);
mB.connect(mC);
...
return 0;
}
該代碼編譯正確並且工作正常,直到執行結束,我得到的段錯誤爲:delete secondary_ins[i];
從return 0;
被調用。奇怪的是,其他模塊的destructor
也被稱爲,並沒有任何問題。處理從基類繼承的指針數組可能有問題嗎?有任何想法嗎?
謝謝:)
http://bit.ly/1dS4wcV – 735Tesla
哦!謝謝@ 735Tesla!我永遠不會想到這一點! – makeMonday