ACE内存分配器,使用了大量的虚函数和C++模板机制。 JAWS也从ACE_New_Allocator继承了两个类。 ACE_Allocator的构造器是正常函数,但是析构器却使用了虚函数。 分配空间使用了多个函数,均是采用虚函数。malloc只指定了分配空间的大小,calloc有两个函数,一个可以指定分配空间的大小及初始值,另一个则可指定元素大小,和分配元素的数目,其实可以通过{dy}个calloc来做到,但是API的完备性有利于更方便地进行编程。 trybind可以在 name和指针之间建立关联关系;find可查找name,并通过指针把参数传出来。 static ACE_Allocator *allocator_ // 整个进程的ACE_Allocator对象。 ACE_New_Allocator类使用的一些方法在ACE_Allocator类中已经定义: // 在ACE_Allocator中是纯虚函数,而到了ACE_New_Allocator中就是虚函数了。 纯虚函数和虚函数还有很大区别的。 virtual void *malloc (size_t nbytes);
virtual void *calloc (size_t nbytes, char initial_value = '\0'); virtual void *calloc (size_t n_elem, size_t elem_size, char initial_value = '\0'); virtual void free (void *ptr); 纯虚函数后面一般有个等号起作用? 如virtual void *malloc (size_type nbytes) = 0; doxygen生成的文档有问题?ACE_Allocator应该还有另外一个子类的,即ACE_Static_Allocator_Base,但是在生成的html中病没有这个类。 |