errno的地址是否会为NULL

heronism 2012-03-21 05:57:37
extern int *__errno_location (void) __THROW __attribute__ ((__const__));
# define errno (*__errno_location ())

如上,是多线程版的errno定义,我理解errno是对函数指针__errno_location解引用,所以其应该不会为NULL,但是coverity检查说有这种可能,请高手看下,多谢
...全文
160 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
heronism 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sun007700 的回复:]

"但是coverity检查说有这种可能"
因为
int *__errno_location()
返回的是一个指针。当然就有可能为NULL。
[/Quote]
这个是不是__errno_location内部有保证啊,否则用起来errno岂不是不安全
sun007700 2012-03-21
  • 打赏
  • 举报
回复
"但是coverity检查说有这种可能"
因为
int *__errno_location()
返回的是一个指针。当然就有可能为NULL。
pengzhixi 2012-03-21
  • 打赏
  • 举报
回复
是对函数返回的指针解引用。是否为NULL就看函数里面的实现咯

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧