1. 程式人生 > >條目十一《理解自定義分配子的合理用法》

條目十一《理解自定義分配子的合理用法》

obj 源碼剖析 共享內存 參考 class dealloc ... hint emp

條目十一《理解自定義分配子的合理用法》

根據大牛們的測試:

STL默認的內存管理器(allocator

又或者需求不一樣時:

1.allocator

由於以上的STL默認的分配子allocator

template<typename T>
class MyAllocator {
    pointer allocate(size_type numObjects, const void* localtyHint = 0)
    {
        ...
    }

    void deallocate(pointer ptrToMemory, size_type numObjects)
    {
        ...
    }
};

typedef DateType int;
typedef vector<DateType, MyAllocator<DateType> > MyVector;

MyVector vec;

通過對allocate和deallocate兩個成員函數的重寫,就可以達到自定義分配子的目的。

例子:
  • 1.建立一個共享容器內存塊。(1.memget申請一塊共享內存。2.在共享內存中構造一塊內存作為容器的對象存放內存空間。3.析構共享內存裏的對象。4.釋放共享內存free。)

對於條目十和條目十一,其實掌握的還是一般,後面閱讀《stl源碼剖析》再深入學習吧。

參考:

《Effective STL》

條目十一《理解自定義分配子的合理用法》