Почему был реализован __pool_alloc_base в gcc / libstdc ++ - v3 / src / c ++ 98 / pool_allocator. cc? - PullRequest
1 голос
/ 20 апреля 2020

Когда я читал pool_allocator в STL, я обнаружил, что многие функции класса __pool_alloc_base реализованы в gcc / libstdc ++ - v3 / src / c ++ 98 / pool_allocator. cc, почему это разработано? Почему бы не поместить реализацию этих функций в pool_allocator.h?

pool_allocator.h

class __pool_alloc_base {
protected:
    ...
    _GLIBCXX_CONST _Obj *volatile *_M_get_free_list(size_t __bytes) throw();

    __mutex & _M_get_mutex() throw();

    // Returns an object of size __n, and optionally adds to size __n
    // free list.
    void *_M_refill(size_t __n);

    // Allocates a chunk for nobjs of size size.  nobjs may be reduced
    // if it is inconvenient to allocate the requested number.
    char *_M_allocate_chunk(size_t __n, int &__nobjs);
};
...