errno的地址是否会为NULL,该如何解决
errno的地址是否会为NULL
extern int *__errno_location (void) __THROW __attribute__ ((__const__));
# define errno (*__errno_location ())
如上,是多线程版的errno定义,我理解errno是对函数指针__errno_location解引用,所以其应该不会为NULL,但是coverity检查说有这种可能,请高手看下,多谢
------解决方案--------------------
是对函数返回的指针解引用。是否为NULL就看函数里面的实现咯
------解决方案--------------------
"但是coverity检查说有这种可能"
因为
int *__errno_location()
返回的是一个指针。当然就有可能为NULL。
extern int *__errno_location (void) __THROW __attribute__ ((__const__));
# define errno (*__errno_location ())
如上,是多线程版的errno定义,我理解errno是对函数指针__errno_location解引用,所以其应该不会为NULL,但是coverity检查说有这种可能,请高手看下,多谢
------解决方案--------------------
是对函数返回的指针解引用。是否为NULL就看函数里面的实现咯
------解决方案--------------------
"但是coverity检查说有这种可能"
因为
int *__errno_location()
返回的是一个指针。当然就有可能为NULL。