C++和Java有什麼不同

minizhu發表於2013-09-02

這是一個很困難的話題。

首先,同時精通C++的Java的童靴應該是比較少的,特別是國內的一個膚淺的學習氣氛。

其次,不同點其實太多了,不知道從何說起。粒度太細的話,可以寫本書了;力度太粗的話,也沒啥意思。


突然心血來潮,可以每天想起來或者沒事的時候,就來寫一點,時間長了,估計就是一個比較完整的list了。

下面開始從幾個方面來對比。


(1)記憶體管理

        C++提供堆和棧兩種主要的記憶體非配策略(靜態全域性區和程式碼區就不提了)。Java中的所有非基本型別物件,都是需要new出來的,也就是在堆上。

        C++對於在堆上分配的記憶體,需要外界負責釋放,否則會造成記憶體洩露,所幸智慧指標提供了一種解決方案。Java的記憶體回收是基於GC的,由JVM負責清理回收無用的記憶體。

        總結,C++在記憶體管理上更加的靈活和高效,使用者可以根據自己的實際情況來定製過載new,並提供相應的異常處理函式;Java就無法做到這一點了。但是Java解放了程式猿,使用比較方便。





相關文章