看ACE的源码,发现类中的重载new、delete操作符的方法很简洁,现摘抄如下:
首先定义宏:
// ============================================================================
// ACE_ALLOC_HOOK* macros
//
// Macros to declare and define class-specific allocation operators.
// ============================================================================
# if defined (ACE_HAS_ALLOC_HOOKS)
# define ACE_ALLOC_HOOK_DECLARE \
void *operator new (size_t bytes); \
void operator delete (void *ptr);
// Note that these are just place holders for now. Some day they
// may be be replaced by <ACE_Malloc>.
# define ACE_ALLOC_HOOK_DEFINE(CLASS) \
void *CLASS::operator new (size_t bytes) { return ::new char[bytes]; } \
void CLASS::operator delete (void *ptr) { delete [] ((char *) ptr); }
# else
# define ACE_ALLOC_HOOK_DECLARE struct __Ace {} /* Just need a dummy... */
# define ACE_ALLOC_HOOK_DEFINE(CLASS)
# endif /* ACE_HAS_ALLOC_HOOKS */然后在需要重载new、delete的类的声明中加入
ACE_ALLOC_HOOK_DECLARE实现中加入:
ACE_ALLOC_HOOK_DEFINE(CLASS)
本文介绍了ACE框架中用于重载new和delete操作符的一种简洁方法。通过定义宏ACE_ALLOC_HOOK_DECLARE及ACE_ALLOC_HOOK_DEFINE来实现类特定的内存分配和释放操作。
6629

被折叠的 条评论
为什么被折叠?



