這是一個編譯器錯誤或運行時錯誤?下面的代碼可以編譯!如果我使用new或free來使用malloc,結果如何?
class Base{
void g();
void h();
};
int main()
{
Base* p = new Base();
free(p);
return 0;
}
但是它不能與虛擬功能,如果我聲明Base類這樣
class Base{
virtual void g();
void h();
};
下面的代碼可以編譯所有的時間編制,無論功能是虛擬的或不。
class Base{
void g();
void h();
};
int main()
{
Base* p = (Base*)malloc(sizeof(Base));
delete p;
return 0;
}
結果是程序沒有定義的行爲。 – avakar 2010-03-28 22:29:11
@avakar,爲什麼不把它作爲答案? – 2010-03-28 22:38:55
@Poita - 顯然他想要*我*得分;-) – Steve314 2010-03-28 22:43:26