第二章空間配置器allocator
2.2.5節では、第1レベルのコンフィギュレータ_malloc_alloc_template
ここでstatic void(*_malloc_alloc_oom_handler()は_malloc_alloc_oom_handler変数はstaticの関数ポインタであり、戻り値がvoidであり、パラメータが空の関数を指す.
クラスのpublicセクションには、次の関数があります.
この関数名はset_ですmalloc_handler、値を返すときに関数ポインタ(void、パラメータが空)を返し、set_malloc_handlerのパラメータも関数ポインタ(同様にこの関数ポインタも戻り値void、パラメータが空のポインタ)であり、typedefを使用してこの書き方を簡略化することができます.
次のブログを参照してください:(関数ポインタの使用方法について)
http://blog.csdn.net/woyaowenzi/archive/2010/12/20/6086064.aspx
- template<int inst>
- class __malloc_alloc_template
- {
- private:
- static void *oom_malloc(size_t);
- static void **oom_remalloc(void *, size_t);
- static void (*__malloc_alloc_oom_handler)();
-
- public:
- .
- .
- .
- };
ここでstatic void(*_malloc_alloc_oom_handler()は_malloc_alloc_oom_handler変数はstaticの関数ポインタであり、戻り値がvoidであり、パラメータが空の関数を指す.
クラスのpublicセクションには、次の関数があります.
- static void (*set_malloc_handler(void (*f)()))()
- {
- void (*old)() = __malloc_alloc_oom_handler;
- __malloc_alloc_oom_handler = f;
- return (old);
- }
この関数名はset_ですmalloc_handler、値を返すときに関数ポインタ(void、パラメータが空)を返し、set_malloc_handlerのパラメータも関数ポインタ(同様にこの関数ポインタも戻り値void、パラメータが空のポインタ)であり、typedefを使用してこの書き方を簡略化することができます.
次のブログを参照してください:(関数ポインタの使用方法について)
http://blog.csdn.net/woyaowenzi/archive/2010/12/20/6086064.aspx
- typedef void(*TYPE)();
- TYPE set_malloc_handler(TYPE)
- {
- // ( )
- }