同事的面試題,仔細瞅了下。 發現這個問題突然回答不上來。 確實有點生疏,所以做了下面的小結:
- malloc 和 free 都是函數。 new 和 delete 是C++ 的運算符!
- malloc 用 分配內存不會自動調用構造函數, new 就會。
- malloc 分配的空間的大小必須指定, new會自動分配。
- malloc 和 new 分配的內存都在堆上面。
- malloc 分配空間失敗會返回 空指針NULL 而 new 分配失敗了會拋出std::bad_alloc異常。
不管是new 或者 malloc 分配的空間之後, 都應該記得釋放分配的內存。 因爲系統不會自動釋放你申請的空間, 空間在堆上面。
簡單的小結,便於以後查找。