wangzhengquan
2020-09-25 00dba6082e245d917cb7d6eed3c627211ff41cd7
src/queue/include/mem_pool.h
@@ -34,6 +34,7 @@
   return ptr;
}
static inline void mem_pool_free (void *ptr) {
   mm_free(ptr);
   // notify malloc
@@ -41,14 +42,38 @@
}
template <typename T>
static inline  T* mem_pool_attach(int key) {
   void *ptr;
   // T* tptr;
   hashtable_t *hashtable = mm_get_hashtable();
  ptr = hashtable_get(hashtable, key);
// printf("mem_pool_malloc_by_key  malloc before %d, %p\n", key, ptr);
  if(ptr == NULL || ptr == (void *)1 ) {
    ptr = mm_malloc(sizeof(T));
    hashtable_put(hashtable, key, ptr);
    new(ptr) T;
// printf("mem_pool_malloc_by_key  use new %d, %p\n", key, ptr);
  }
  return (T*)ptr;
}
static inline void mem_pool_free_by_key(int key) {
   return mm_free_by_key(key);
}
static inline void *mem_pool_realloc (void *ptr, size_t size) {
   return mm_realloc(ptr, size);
}
static inline hashtable_t * mem_pool_get_hashtable() {
   return mm_get_hashtable();
static inline int mem_pool_alloc_key() {
   return mm_alloc_key();
}
// extern int mm_checkheap(int verbose);