天天看點

delete 調用 虛析構函數失敗

場景: 

class A

{

    int i;

    A() { memset(this, 0, sizof(A))}; // 初始化

   virtual ~A() {}

}

main()

{

     A* a = new A;

     delete a;    //程式會當機。 

}

總結:

為什麼會當機?

A() { memset(this, 0, sizof(A))}; // 初始化

會把虛指針置空, 無法正确 的調用析構函數。重而會生成core. 

虛指針、 虛表:

https://blog.csdn.net/qq_34484472/article/details/78232465

Java沒有虛函數。 所有的函數都是預設動态綁定的。

https://www.runoob.com/java/java-polymorphism.html

繼續閱讀