G2.9 std::alloc的缺點:
1、在alloc::deallocate中沒有將拿到的內存資源還給操作系統,在多任務中將占用很大資源
2、alloc::deallocate函數沒有檢查傳入的p指針的有效性。在這里它默認p為alloc::allocate取得。
如果p并非alloc::allocate取得,該函數仍然可以將其并入回收,這不好。并且如果p所指的大小不是8的倍數的時候,會帶來災難。
一些語法細節
1、比較語句 == 左邊寫值,右邊寫變量,防止把==寫成=編譯能通過。
如:
2、如果使用指針的指針,并且寫成這樣:
obj* *p1, *p2;
//它的結果實際上是這樣
//obj **p1, *p2;
//也就是obj** p1; obj* p2;
//這樣與我們的實際預期不符
3、關于new_handler函數的定義需寫成這樣:
typedef void (*new_handler)();new_handler set_new_handler(new_handler p) throw();
// 該案例如下 |||
typedef void (*H) ();
static H set_malloc_handler (H f);