第二章 空间配置器allocator

在2.2.5节中,第一级配置器__malloc_alloc_template

  
  
  
  
  1. template<int inst>  
  2. class __malloc_alloc_template  
  3. {  
  4. private:  
  5.     static void *oom_malloc(size_t);  
  6.     static void **oom_remalloc(void *, size_t);  
  7.     static void (*__malloc_alloc_oom_handler)();  
  8.  
  9. public:  
  10. .  
  11. .  
  12. .  
  13. }; 

其中static void (*__malloc_alloc_oom_handler)() 是说__malloc_alloc_oom_handler变量是一个static 的函数指针,指向返回值为void,形参为空的函数;

在类中的public部分,有以下函数:

  
  
  
  
  1. static void (*set_malloc_handler(void (*f)()))()  
  2. {  
  3.     void (*old)() = __malloc_alloc_oom_handler;  
  4.     __malloc_alloc_oom_handler = f;  
  5.     return (old);  

该函数名是set_malloc_handler,它返回值时一个函数指针(该函数指针返回值为void,形参为空),并且set_malloc_handler的形参也是一个函数指针(同样该函数指针也是一个返回值为void,形参为空的指针),其实可以利用typedef来简化这种写法:

可以参考以下博客:(关于函数指针的使用方法)

http://blog.csdn.net/woyaowenzi/archive/2010/12/20/6086064.aspx

  
  
  
  
  1. typedef void(*TYPE)();  
  2. TYPE set_malloc_handler(TYPE)  
  3. {  
  4.     //以下定义函数体(略)  

 

你可能感兴趣的:(C++,职场,休闲,STL源码剖析)