闲聊一句ACE_NEW_RETURN
他是这样定义的:# 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_NEW_RETURN失败return出来时,第一处的指针则没有释放。
这时我发现了可爱的auto_ptr。但随便一艘就发现ACE_wrappers\examples\APG\Streams\Answerer.cpp中virtual int open(...)中很多没有释放。
第二,我想知道do{}while(0)除了把多个语句括起来了之外,还有啥特别的意义没? open要是return -1主函数就退出了吧 主函数退了,还是没有delete掉open()里的众多指针阿
页:
[1]