ACE_NEW_RETURN在ACE代码中使用了很多,随处可见,看一下代码就知道这个用处了
说白了就是生成一个对象,然后有个异常处理,加入了安全机制
define ACE_NEW_RETURN(POINTER,CONSTRUCTOR,RET_VAL) do { try { POINTER = new CONSTRUCTOR; } catch (ACE_bad_alloc) { ACE_del_bad_alloc errno = ENOMEM; POINTER = 0; return RET_VAL; } } while (0)
从代码可以看到,是将第二个参数new一个对象赋给第一个参数,如果有异常。返回第三个参数并且POINTER =0;
另外两个定义:
define ACE_NEW_RETURN(POINTER,CONSTRUCTOR,RET_VAL) \
do { POINTER = new CONSTRUCTOR; \
if (POINTER == 0) { errno = ENOMEM; return RET_VAL; } \
} while (0)
if defined (ACE_HAS_NEW_NOTHROW)
# define ACE_NEW_RETURN(POINTER,CONSTRUCTOR,RET_VAL) \
do { POINTER = new (ACE_nothrow) CONSTRUCTOR; \
if (POINTER == 0) { errno = ENOMEM; return RET_VAL; } \
} while (0)
本文深入解析了ACE_NEW_RETURN宏在ACE库中的应用,该宏用于创建对象并包含异常处理机制,确保内存分配失败时能够安全返回。
1287

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



