You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将_Atomic Type *类型指针转换为void *再转回使用?

关于_Atomic指针与void*的转换问题

可以安全地将_Atomic Type *转换为void *,之后再转换回原类型指针使用,具体原因和注意事项如下:

  • C标准明确支持这类指针转换操作
    根据C语言标准,任何指向对象类型的指针都可以转换为void *,且将该void *转换回原指针类型时,得到的指针与原指针完全等价。_Atomic Type属于合法的对象类型,因此_Atomic int *转void *、再反向转回来的操作完全合规,行为是确定的。

  • 对齐要求不会成为障碍
    尽管_Atomic类型的对齐要求可能比对应非原子类型更高,但void *被标准要求能够容纳任何对象指针的对齐信息,转换过程中不会丢失对齐相关的关键信息,转回到原类型后依然能正确访问原子变量。

  • 你提供的示例代码合法且安全
    你的代码中,(void*)&g_x将原子变量地址转为void *传递给回调函数,Use函数里再转换回_Atomic int *并解引用,整个流程完全符合C标准规定,不存在未定义行为,运行结果是可靠的。

内容的提问来源于stack exchange,提问作者Jackoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 02:04:52